{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ef0a4ee4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\oscar'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "f2254ea7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\IDEA'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import os\n",
    "os.getcwd()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "executive-insulin",
   "metadata": {},
   "outputs": [],
   "source": [
    "os.chdir('E:\\\\experimentos\\\\2025\\\\Dataset_3')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "0888b480",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'E:\\\\experimentos\\\\2025\\\\Dataset_3'"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "%pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "d29220ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow import keras\n",
    "#keras.__version__\n",
    "import os, shutil"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "d979c4e9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "E:\\experimentos\\2025\\Dataset_3\n",
      "E:\\experimentos\\2025\\Dataset_3\\conv\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "original_dir = os.path.abspath('E:\\\\experimentos\\\\2025\\\\Dataset_3')\n",
    "# The directory where we will\n",
    "# store our smaller dataset\n",
    "base_dir = os.path.join(original_dir, \"conv\")\n",
    "print(original_dir)\n",
    "print(base_dir)\n",
    "# added by reviewer\n",
    "isdir = os.path.isdir(base_dir) \n",
    "print(isdir) \n",
    "\n",
    "if isdir ==True:\n",
    "    shutil.rmtree(base_dir)\n",
    "\n",
    "os.mkdir(base_dir)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6b486b83",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Directories for our training,\n",
    "# validation and test splits\n",
    "train_dir = os.path.join(base_dir, 'train')\n",
    "os.mkdir(train_dir)\n",
    "validation_dir = os.path.join(base_dir, 'validation')\n",
    "os.mkdir(validation_dir)\n",
    "\n",
    "\n",
    "\n",
    "# Directory with our training tm pictures\n",
    "train_tm_dir = os.path.join(train_dir, 'tm')\n",
    "os.mkdir(train_tm_dir)\n",
    "\n",
    "# Directory with our training cm pictures\n",
    "train_cm_dir = os.path.join(train_dir, 'cutmark')\n",
    "os.mkdir(train_cm_dir)\n",
    "\n",
    "# Directory with our training tramp pictures\n",
    "train_tramp_dir = os.path.join(train_dir, 'trampling')\n",
    "os.mkdir(train_tramp_dir)\n",
    "\n",
    "\n",
    "# Directory with our validation tm pictures\n",
    "validation_tm_dir = os.path.join(validation_dir, 'tm')\n",
    "os.mkdir(validation_tm_dir)\n",
    "\n",
    "# Directory with our validation cm pictures\n",
    "validation_cm_dir = os.path.join(validation_dir, 'cutmark')\n",
    "os.mkdir(validation_cm_dir)\n",
    "\n",
    "# Directory with our validation tramp pictures\n",
    "validation_tramp_dir = os.path.join(validation_dir, 'trampling')\n",
    "os.mkdir(validation_tramp_dir)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d991503b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "440\n",
      "['tm.75.bmp', 'tm.263.bmp', 'tm.56.bmp', 'tm.509.bmp', 'tm.204.bmp', 'tm.323.bmp', 'tm.417.bmp', 'tm.485.bmp', 'tm.253.bmp', 'tm.354.bmp', 'tm.370.bmp', 'tm.428.bmp', 'tm.193.bmp', 'tm.535.bmp', 'tm.361.bmp', 'tm.421.bmp', 'tm.152.bmp', 'tm.328.bmp', 'tm.529.bmp', 'tm.128.bmp', 'tm.92.bmp', 'tm.474.bmp', 'tm.566.bmp', 'tm.34.bmp', 'tm.528.bmp', 'tm.621.bmp', 'tm.597.bmp', 'tm.29.bmp', 'tm.69.bmp', 'tm.120.bmp', 'tm.124.bmp', 'tm.505.bmp', 'tm.20.bmp', 'tm.484.bmp', 'tm.580.bmp', 'tm.401.bmp', 'tm.519.bmp', 'tm.118.bmp', 'tm.140.bmp', 'tm.220.bmp', 'tm.260.bmp', 'tm.336.bmp', 'tm.105.bmp', 'tm.189.bmp', 'tm.324.bmp', 'tm.372.bmp', 'tm.2.bmp', 'tm.358.bmp', 'tm.279.bmp', 'tm.57.bmp', 'tm.326.bmp', 'tm.270.bmp', 'tm.468.bmp', 'tm.243.bmp', 'tm.280.bmp', 'tm.330.bmp', 'tm.283.bmp', 'tm.94.bmp', 'tm.563.bmp', 'tm.561.bmp', 'tm.104.bmp', 'tm.606.bmp', 'tm.271.bmp', 'tm.76.bmp', 'tm.364.bmp', 'tm.70.bmp', 'tm.520.bmp', 'tm.38.bmp', 'tm.61.bmp', 'tm.349.bmp', 'tm.436.bmp', 'tm.492.bmp', 'tm.235.bmp', 'tm.604.bmp', 'tm.53.bmp', 'tm.239.bmp', 'tm.206.bmp', 'tm.547.bmp', 'tm.230.bmp', 'tm.313.bmp', 'tm.214.bmp', 'tm.526.bmp', 'tm.254.bmp', 'tm.127.bmp', 'tm.129.bmp', 'tm.522.bmp', 'tm.171.bmp', 'tm.65.bmp', 'tm.434.bmp', 'tm.579.bmp', 'tm.530.bmp', 'tm.113.bmp', 'tm.282.bmp', 'tm.0.bmp', 'tm.442.bmp', 'tm.210.bmp', 'tm.236.bmp', 'tm.36.bmp', 'tm.295.bmp', 'tm.68.bmp', 'tm.188.bmp', 'tm.138.bmp', 'tm.525.bmp', 'tm.379.bmp', 'tm.67.bmp', 'tm.552.bmp', 'tm.386.bmp', 'tm.172.bmp', 'tm.538.bmp', 'tm.161.bmp', 'tm.11.bmp', 'tm.22.bmp', 'tm.145.bmp', 'tm.347.bmp', 'tm.590.bmp', 'tm.488.bmp', 'tm.85.bmp', 'tm.368.bmp', 'tm.318.bmp', 'tm.574.bmp', 'tm.589.bmp', 'tm.190.bmp', 'tm.299.bmp', 'tm.154.bmp', 'tm.202.bmp', 'tm.438.bmp', 'tm.356.bmp', 'tm.116.bmp', 'tm.117.bmp', 'tm.96.bmp', 'tm.13.bmp', 'tm.297.bmp', 'tm.537.bmp', 'tm.285.bmp', 'tm.46.bmp', 'tm.111.bmp', 'tm.196.bmp', 'tm.272.bmp', 'tm.499.bmp', 'tm.143.bmp', 'tm.460.bmp', 'tm.14.bmp', 'tm.432.bmp', 'tm.31.bmp', 'tm.620.bmp', 'tm.345.bmp', 'tm.7.bmp', 'tm.362.bmp', 'tm.405.bmp', 'tm.548.bmp', 'tm.514.bmp', 'tm.412.bmp', 'tm.249.bmp', 'tm.63.bmp', 'tm.257.bmp', 'tm.197.bmp', 'tm.571.bmp', 'tm.52.bmp', 'tm.169.bmp', 'tm.240.bmp', 'tm.398.bmp', 'tm.576.bmp', 'tm.605.bmp', 'tm.91.bmp', 'tm.449.bmp', 'tm.360.bmp', 'tm.331.bmp', 'tm.110.bmp', 'tm.544.bmp', 'tm.592.bmp', 'tm.317.bmp', 'tm.183.bmp', 'tm.246.bmp', 'tm.6.bmp', 'tm.135.bmp', 'tm.608.bmp', 'tm.293.bmp', 'tm.455.bmp', 'tm.17.bmp', 'tm.258.bmp', 'tm.568.bmp', 'tm.490.bmp', 'tm.149.bmp', 'tm.387.bmp', 'tm.147.bmp', 'tm.425.bmp', 'tm.201.bmp', 'tm.622.bmp', 'tm.381.bmp', 'tm.489.bmp', 'tm.58.bmp', 'tm.177.bmp', 'tm.322.bmp', 'tm.314.bmp', 'tm.420.bmp', 'tm.518.bmp', 'tm.394.bmp', 'tm.252.bmp', 'tm.586.bmp', 'tm.62.bmp', 'tm.155.bmp', 'tm.582.bmp', 'tm.158.bmp', 'tm.133.bmp', 'tm.471.bmp', 'tm.407.bmp', 'tm.454.bmp', 'tm.400.bmp', 'tm.524.bmp', 'tm.185.bmp', 'tm.79.bmp', 'tm.163.bmp', 'tm.479.bmp', 'tm.108.bmp', 'tm.365.bmp', 'tm.298.bmp', 'tm.287.bmp', 'tm.208.bmp', 'tm.510.bmp', 'tm.527.bmp', 'tm.553.bmp', 'tm.334.bmp', 'tm.404.bmp', 'tm.131.bmp', 'tm.39.bmp', 'tm.564.bmp', 'tm.541.bmp', 'tm.440.bmp', 'tm.376.bmp', 'tm.506.bmp', 'tm.213.bmp', 'tm.587.bmp', 'tm.9.bmp', 'tm.346.bmp', 'tm.277.bmp', 'tm.275.bmp', 'tm.119.bmp', 'tm.265.bmp', 'tm.352.bmp', 'tm.315.bmp', 'tm.43.bmp', 'tm.41.bmp', 'tm.125.bmp', 'tm.567.bmp', 'tm.194.bmp', 'tm.88.bmp', 'tm.19.bmp', 'tm.109.bmp', 'tm.389.bmp', 'tm.583.bmp', 'tm.101.bmp', 'tm.10.bmp', 'tm.462.bmp', 'tm.242.bmp', 'tm.540.bmp', 'tm.269.bmp', 'tm.545.bmp', 'tm.51.bmp', 'tm.90.bmp', 'tm.264.bmp', 'tm.114.bmp', 'tm.159.bmp', 'tm.307.bmp', 'tm.26.bmp', 'tm.306.bmp', 'tm.192.bmp', 'tm.478.bmp', 'tm.219.bmp', 'tm.337.bmp', 'tm.341.bmp', 'tm.21.bmp', 'tm.463.bmp', 'tm.221.bmp', 'tm.415.bmp', 'tm.377.bmp', 'tm.198.bmp', 'tm.470.bmp', 'tm.262.bmp', 'tm.476.bmp', 'tm.385.bmp', 'tm.181.bmp', 'tm.89.bmp', 'tm.366.bmp', 'tm.231.bmp', 'tm.624.bmp', 'tm.227.bmp', 'tm.74.bmp', 'tm.30.bmp', 'tm.320.bmp', 'tm.319.bmp', 'tm.577.bmp', 'tm.515.bmp', 'tm.607.bmp', 'tm.261.bmp', 'tm.496.bmp', 'tm.623.bmp', 'tm.570.bmp', 'tm.176.bmp', 'tm.60.bmp', 'tm.80.bmp', 'tm.87.bmp', 'tm.166.bmp', 'tm.338.bmp', 'tm.373.bmp', 'tm.289.bmp', 'tm.500.bmp', 'tm.521.bmp', 'tm.296.bmp', 'tm.24.bmp', 'tm.342.bmp', 'tm.348.bmp', 'tm.408.bmp', 'tm.97.bmp', 'tm.453.bmp', 'tm.173.bmp', 'tm.103.bmp', 'tm.200.bmp', 'tm.344.bmp', 'tm.303.bmp', 'tm.497.bmp', 'tm.292.bmp', 'tm.325.bmp', 'tm.423.bmp', 'tm.215.bmp', 'tm.616.bmp', 'tm.291.bmp', 'tm.112.bmp', 'tm.27.bmp', 'tm.559.bmp', 'tm.48.bmp', 'tm.448.bmp', 'tm.457.bmp', 'tm.123.bmp', 'tm.95.bmp', 'tm.588.bmp', 'tm.375.bmp', 'tm.191.bmp', 'tm.391.bmp', 'tm.203.bmp', 'tm.572.bmp', 'tm.618.bmp', 'tm.388.bmp', 'tm.167.bmp', 'tm.419.bmp', 'tm.8.bmp', 'tm.156.bmp', 'tm.487.bmp', 'tm.504.bmp', 'tm.288.bmp', 'tm.502.bmp', 'tm.569.bmp', 'tm.86.bmp', 'tm.482.bmp', 'tm.187.bmp', 'tm.276.bmp', 'tm.353.bmp', 'tm.42.bmp', 'tm.595.bmp', 'tm.300.bmp', 'tm.429.bmp', 'tm.477.bmp', 'tm.523.bmp', 'tm.141.bmp', 'tm.382.bmp', 'tm.174.bmp', 'tm.532.bmp', 'tm.226.bmp', 'tm.207.bmp', 'tm.134.bmp', 'tm.475.bmp', 'tm.612.bmp', 'tm.259.bmp', 'tm.150.bmp', 'tm.486.bmp', 'tm.238.bmp', 'tm.144.bmp', 'tm.395.bmp', 'tm.433.bmp', 'tm.444.bmp', 'tm.233.bmp', 'tm.427.bmp', 'tm.130.bmp', 'tm.542.bmp', 'tm.28.bmp', 'tm.555.bmp', 'tm.406.bmp', 'tm.617.bmp', 'tm.102.bmp', 'tm.333.bmp', 'tm.557.bmp', 'tm.209.bmp', 'tm.312.bmp', 'tm.217.bmp', 'tm.107.bmp', 'tm.3.bmp', 'tm.480.bmp', 'tm.451.bmp', 'tm.447.bmp', 'tm.186.bmp', 'tm.437.bmp', 'tm.598.bmp', 'tm.416.bmp', 'tm.619.bmp', 'tm.411.bmp', 'tm.340.bmp', 'tm.536.bmp', 'tm.469.bmp', 'tm.611.bmp', 'tm.464.bmp', 'tm.539.bmp', 'tm.594.bmp', 'tm.380.bmp', 'tm.237.bmp', 'tm.157.bmp', 'tm.350.bmp', 'tm.49.bmp', 'tm.106.bmp', 'tm.218.bmp', 'tm.99.bmp', 'tm.302.bmp', 'tm.40.bmp', 'tm.93.bmp', 'tm.493.bmp', 'tm.560.bmp', 'tm.402.bmp', 'tm.205.bmp', 'tm.304.bmp', 'tm.184.bmp', 'tm.72.bmp', 'tm.573.bmp', 'tm.343.bmp', 'tm.83.bmp', 'tm.550.bmp', 'tm.418.bmp', 'tm.54.bmp', 'tm.392.bmp', 'tm.551.bmp', 'tm.305.bmp', 'tm.23.bmp', 'tm.593.bmp']\n",
      "189\n",
      "['tm.148.bmp', 'tm.367.bmp', 'tm.126.bmp', 'tm.626.bmp', 'tm.435.bmp', 'tm.222.bmp', 'tm.151.bmp', 'tm.59.bmp', 'tm.413.bmp', 'tm.12.bmp', 'tm.628.bmp', 'tm.584.bmp', 'tm.517.bmp', 'tm.294.bmp', 'tm.301.bmp', 'tm.329.bmp', 'tm.100.bmp', 'tm.351.bmp', 'tm.16.bmp', 'tm.316.bmp', 'tm.165.bmp', 'tm.121.bmp', 'tm.378.bmp', 'tm.78.bmp', 'tm.267.bmp', 'tm.465.bmp', 'tm.266.bmp', 'tm.578.bmp', 'tm.543.bmp', 'tm.216.bmp', 'tm.483.bmp', 'tm.512.bmp', 'tm.403.bmp', 'tm.459.bmp', 'tm.132.bmp', 'tm.599.bmp', 'tm.175.bmp', 'tm.228.bmp', 'tm.516.bmp', 'tm.256.bmp', 'tm.396.bmp', 'tm.223.bmp', 'tm.441.bmp', 'tm.234.bmp', 'tm.71.bmp', 'tm.531.bmp', 'tm.409.bmp', 'tm.426.bmp', 'tm.232.bmp', 'tm.311.bmp', 'tm.55.bmp', 'tm.613.bmp', 'tm.47.bmp', 'tm.179.bmp', 'tm.25.bmp', 'tm.627.bmp', 'tm.274.bmp', 'tm.224.bmp', 'tm.1.bmp', 'tm.581.bmp', 'tm.18.bmp', 'tm.554.bmp', 'tm.212.bmp', 'tm.498.bmp', 'tm.495.bmp', 'tm.50.bmp', 'tm.225.bmp', 'tm.286.bmp', 'tm.84.bmp', 'tm.359.bmp', 'tm.250.bmp', 'tm.397.bmp', 'tm.556.bmp', 'tm.609.bmp', 'tm.139.bmp', 'tm.410.bmp', 'tm.472.bmp', 'tm.615.bmp', 'tm.558.bmp', 'tm.64.bmp', 'tm.511.bmp', 'tm.625.bmp', 'tm.278.bmp', 'tm.247.bmp', 'tm.507.bmp', 'tm.399.bmp', 'tm.162.bmp', 'tm.414.bmp', 'tm.458.bmp', 'tm.603.bmp', 'tm.81.bmp', 'tm.248.bmp', 'tm.327.bmp', 'tm.339.bmp', 'tm.44.bmp', 'tm.5.bmp', 'tm.575.bmp', 'tm.445.bmp', 'tm.614.bmp', 'tm.355.bmp', 'tm.491.bmp', 'tm.180.bmp', 'tm.601.bmp', 'tm.168.bmp', 'tm.309.bmp', 'tm.466.bmp', 'tm.273.bmp', 'tm.122.bmp', 'tm.182.bmp', 'tm.534.bmp', 'tm.146.bmp', 'tm.281.bmp', 'tm.251.bmp', 'tm.456.bmp', 'tm.424.bmp', 'tm.443.bmp', 'tm.357.bmp', 'tm.195.bmp', 'tm.170.bmp', 'tm.452.bmp', 'tm.98.bmp', 'tm.115.bmp', 'tm.565.bmp', 'tm.383.bmp', 'tm.393.bmp', 'tm.153.bmp', 'tm.82.bmp', 'tm.546.bmp', 'tm.73.bmp', 'tm.308.bmp', 'tm.508.bmp', 'tm.32.bmp', 'tm.37.bmp', 'tm.244.bmp', 'tm.422.bmp', 'tm.229.bmp', 'tm.160.bmp', 'tm.513.bmp', 'tm.332.bmp', 'tm.66.bmp', 'tm.481.bmp', 'tm.446.bmp', 'tm.461.bmp', 'tm.562.bmp', 'tm.321.bmp', 'tm.596.bmp', 'tm.374.bmp', 'tm.549.bmp', 'tm.600.bmp', 'tm.199.bmp', 'tm.137.bmp', 'tm.241.bmp', 'tm.4.bmp', 'tm.610.bmp', 'tm.384.bmp', 'tm.450.bmp', 'tm.245.bmp', 'tm.602.bmp', 'tm.136.bmp', 'tm.371.bmp', 'tm.310.bmp', 'tm.178.bmp', 'tm.467.bmp', 'tm.268.bmp', 'tm.290.bmp', 'tm.431.bmp', 'tm.390.bmp', 'tm.363.bmp', 'tm.142.bmp', 'tm.430.bmp', 'tm.45.bmp', 'tm.369.bmp', 'tm.255.bmp', 'tm.77.bmp', 'tm.335.bmp', 'tm.501.bmp', 'tm.533.bmp', 'tm.35.bmp', 'tm.164.bmp', 'tm.284.bmp', 'tm.503.bmp', 'tm.473.bmp', 'tm.211.bmp', 'tm.15.bmp', 'tm.591.bmp', 'tm.494.bmp', 'tm.439.bmp', 'tm.33.bmp', 'tm.585.bmp']\n",
      "105\n",
      "['cutmark.120.bmp', 'cutmark.81.bmp', 'cutmark.79.bmp', 'cutmark.13.bmp', 'cutmark.1.bmp', 'cutmark.67.bmp', 'cutmark.145.bmp', 'cutmark.115.bmp', 'cutmark.37.bmp', 'cutmark.65.bmp', 'cutmark.61.bmp', 'cutmark.51.bmp', 'cutmark.6.bmp', 'cutmark.23.bmp', 'cutmark.147.bmp', 'cutmark.138.bmp', 'cutmark.128.bmp', 'cutmark.126.bmp', 'cutmark.73.bmp', 'cutmark.25.bmp', 'cutmark.141.bmp', 'cutmark.91.bmp', 'cutmark.31.bmp', 'cutmark.143.bmp', 'cutmark.130.bmp', 'cutmark.54.bmp', 'cutmark.50.bmp', 'cutmark.32.bmp', 'cutmark.18.bmp', 'cutmark.76.bmp', 'cutmark.80.bmp', 'cutmark.16.bmp', 'cutmark.108.bmp', 'cutmark.59.bmp', 'cutmark.100.bmp', 'cutmark.66.bmp', 'cutmark.2.bmp', 'cutmark.34.bmp', 'cutmark.106.bmp', 'cutmark.69.bmp', 'cutmark.27.bmp', 'cutmark.124.bmp', 'cutmark.121.bmp', 'cutmark.129.bmp', 'cutmark.45.bmp', 'cutmark.53.bmp', 'cutmark.88.bmp', 'cutmark.42.bmp', 'cutmark.75.bmp', 'cutmark.95.bmp', 'cutmark.29.bmp', 'cutmark.94.bmp', 'cutmark.7.bmp', 'cutmark.132.bmp', 'cutmark.149.bmp', 'cutmark.39.bmp', 'cutmark.113.bmp', 'cutmark.104.bmp', 'cutmark.43.bmp', 'cutmark.15.bmp', 'cutmark.96.bmp', 'cutmark.26.bmp', 'cutmark.62.bmp', 'cutmark.93.bmp', 'cutmark.44.bmp', 'cutmark.103.bmp', 'cutmark.21.bmp', 'cutmark.111.bmp', 'cutmark.12.bmp', 'cutmark.14.bmp', 'cutmark.89.bmp', 'cutmark.47.bmp', 'cutmark.72.bmp', 'cutmark.49.bmp', 'cutmark.135.bmp', 'cutmark.10.bmp', 'cutmark.101.bmp', 'cutmark.9.bmp', 'cutmark.77.bmp', 'cutmark.102.bmp', 'cutmark.134.bmp', 'cutmark.82.bmp', 'cutmark.4.bmp', 'cutmark.99.bmp', 'cutmark.144.bmp', 'cutmark.28.bmp', 'cutmark.20.bmp', 'cutmark.64.bmp', 'cutmark.140.bmp', 'cutmark.127.bmp', 'cutmark.136.bmp', 'cutmark.139.bmp', 'cutmark.60.bmp', 'cutmark.55.bmp', 'cutmark.57.bmp', 'cutmark.70.bmp', 'cutmark.85.bmp', 'cutmark.40.bmp', 'cutmark.137.bmp', 'cutmark.114.bmp', 'cutmark.117.bmp', 'cutmark.68.bmp', 'cutmark.119.bmp', 'cutmark.24.bmp', 'cutmark.116.bmp']\n",
      "45\n",
      "['cutmark.112.bmp', 'cutmark.0.bmp', 'cutmark.74.bmp', 'cutmark.5.bmp', 'cutmark.48.bmp', 'cutmark.78.bmp', 'cutmark.56.bmp', 'cutmark.30.bmp', 'cutmark.110.bmp', 'cutmark.98.bmp', 'cutmark.122.bmp', 'cutmark.17.bmp', 'cutmark.46.bmp', 'cutmark.84.bmp', 'cutmark.38.bmp', 'cutmark.87.bmp', 'cutmark.22.bmp', 'cutmark.58.bmp', 'cutmark.33.bmp', 'cutmark.86.bmp', 'cutmark.105.bmp', 'cutmark.36.bmp', 'cutmark.131.bmp', 'cutmark.97.bmp', 'cutmark.90.bmp', 'cutmark.35.bmp', 'cutmark.107.bmp', 'cutmark.11.bmp', 'cutmark.92.bmp', 'cutmark.63.bmp', 'cutmark.19.bmp', 'cutmark.83.bmp', 'cutmark.142.bmp', 'cutmark.133.bmp', 'cutmark.148.bmp', 'cutmark.41.bmp', 'cutmark.71.bmp', 'cutmark.125.bmp', 'cutmark.118.bmp', 'cutmark.52.bmp', 'cutmark.3.bmp', 'cutmark.123.bmp', 'cutmark.109.bmp', 'cutmark.8.bmp', 'cutmark.146.bmp']\n",
      "108\n",
      "['trampling.1.bmp', 'trampling.61.bmp', 'trampling.32.bmp', 'trampling.50.bmp', 'trampling.43.bmp', 'trampling.148.bmp', 'trampling.101.bmp', 'trampling.62.bmp', 'trampling.95.bmp', 'trampling.66.bmp', 'trampling.13.bmp', 'trampling.76.bmp', 'trampling.82.bmp', 'trampling.128.bmp', 'trampling.6.bmp', 'trampling.86.bmp', 'trampling.73.bmp', 'trampling.69.bmp', 'trampling.114.bmp', 'trampling.37.bmp', 'trampling.89.bmp', 'trampling.45.bmp', 'trampling.59.bmp', 'trampling.150.bmp', 'trampling.26.bmp', 'trampling.96.bmp', 'trampling.36.bmp', 'trampling.23.bmp', 'trampling.120.bmp', 'trampling.136.bmp', 'trampling.102.bmp', 'trampling.65.bmp', 'trampling.100.bmp', 'trampling.54.bmp', 'trampling.25.bmp', 'trampling.132.bmp', 'trampling.16.bmp', 'trampling.113.bmp', 'trampling.15.bmp', 'trampling.105.bmp', 'trampling.144.bmp', 'trampling.2.bmp', 'trampling.34.bmp', 'trampling.111.bmp', 'trampling.94.bmp', 'trampling.27.bmp', 'trampling.91.bmp', 'trampling.126.bmp', 'trampling.88.bmp', 'trampling.51.bmp', 'trampling.115.bmp', 'trampling.131.bmp', 'trampling.93.bmp', 'trampling.42.bmp', 'trampling.80.bmp', 'trampling.75.bmp', 'trampling.29.bmp', 'trampling.151.bmp', 'trampling.7.bmp', 'trampling.81.bmp', 'trampling.135.bmp', 'trampling.33.bmp', 'trampling.39.bmp', 'trampling.18.bmp', 'trampling.141.bmp', 'trampling.31.bmp', 'trampling.99.bmp', 'trampling.53.bmp', 'trampling.104.bmp', 'trampling.44.bmp', 'trampling.108.bmp', 'trampling.21.bmp', 'trampling.127.bmp', 'trampling.12.bmp', 'trampling.14.bmp', 'trampling.79.bmp', 'trampling.47.bmp', 'trampling.129.bmp', 'trampling.49.bmp', 'trampling.138.bmp', 'trampling.10.bmp', 'trampling.106.bmp', 'trampling.9.bmp', 'trampling.77.bmp', 'trampling.130.bmp', 'trampling.137.bmp', 'trampling.140.bmp', 'trampling.4.bmp', 'trampling.103.bmp', 'trampling.149.bmp', 'trampling.28.bmp', 'trampling.20.bmp', 'trampling.64.bmp', 'trampling.143.bmp', 'trampling.112.bmp', 'trampling.139.bmp', 'trampling.142.bmp', 'trampling.60.bmp', 'trampling.55.bmp', 'trampling.57.bmp', 'trampling.70.bmp', 'trampling.85.bmp', 'trampling.40.bmp', 'trampling.153.bmp', 'trampling.119.bmp', 'trampling.122.bmp', 'trampling.68.bmp', 'trampling.124.bmp']\n",
      "46\n",
      "['trampling.24.bmp', 'trampling.121.bmp', 'trampling.117.bmp', 'trampling.0.bmp', 'trampling.74.bmp', 'trampling.5.bmp', 'trampling.48.bmp', 'trampling.78.bmp', 'trampling.56.bmp', 'trampling.30.bmp', 'trampling.110.bmp', 'trampling.98.bmp', 'trampling.58.bmp', 'trampling.17.bmp', 'trampling.46.bmp', 'trampling.84.bmp', 'trampling.38.bmp', 'trampling.87.bmp', 'trampling.22.bmp', 'trampling.116.bmp', 'trampling.67.bmp', 'trampling.72.bmp', 'trampling.134.bmp', 'trampling.97.bmp', 'trampling.90.bmp', 'trampling.35.bmp', 'trampling.107.bmp', 'trampling.11.bmp', 'trampling.92.bmp', 'trampling.63.bmp', 'trampling.19.bmp', 'trampling.83.bmp', 'trampling.145.bmp', 'trampling.133.bmp', 'trampling.152.bmp', 'trampling.41.bmp', 'trampling.71.bmp', 'trampling.125.bmp', 'trampling.118.bmp', 'trampling.52.bmp', 'trampling.3.bmp', 'trampling.147.bmp', 'trampling.123.bmp', 'trampling.109.bmp', 'trampling.8.bmp', 'trampling.146.bmp']\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "# randomize order of image locations\n",
    "# this will help model in not being data sequence dependent\n",
    "\n",
    "# Copy first CM images to train_lion_dir\n",
    "import random\n",
    "    \n",
    "    \n",
    "\n",
    "# Copy first TM images to train_tm_dir # \n",
    "fnames = ['tm.{}.bmp'.format(i) for i in range(629)]\n",
    "random.seed(10)\n",
    "random.shuffle(fnames)\n",
    "fnamest = fnames[0:440]\n",
    "print(len(fnamest))\n",
    "print(fnamest)\n",
    "\n",
    "for fname in fnamest:\n",
    "    src = os.path.join(original_dir, fname)\n",
    "    dst = os.path.join(train_tm_dir, fname)\n",
    "    shutil.copyfile(src, dst)\n",
    "        \n",
    "# Copy next TM images to validation_tm_dir\n",
    "fnamesv = fnames[440:629]\n",
    "print(len(fnamesv))\n",
    "print(fnamesv)\n",
    "for fname in fnamesv:\n",
    "    src = os.path.join(original_dir, fname)\n",
    "    dst = os.path.join(validation_tm_dir, fname)\n",
    "    shutil.copyfile(src, dst)\n",
    "         \n",
    "        \n",
    "    \n",
    "# Copy first CM images to train_cm_dir # \n",
    "fnames = ['cutmark.{}.bmp'.format(i) for i in range(150)]\n",
    "random.seed(10)\n",
    "random.shuffle(fnames)\n",
    "fnamest = fnames[0:105]\n",
    "print(len(fnamest))\n",
    "print(fnamest)\n",
    "\n",
    "for fname in fnamest:\n",
    "    src = os.path.join(original_dir, fname)\n",
    "    dst = os.path.join(train_cm_dir, fname)\n",
    "    shutil.copyfile(src, dst)\n",
    "        \n",
    "# Copy next CM images to validation_cm_dir\n",
    "fnamesv = fnames[105:150]\n",
    "print(len(fnamesv))\n",
    "print(fnamesv)\n",
    "for fname in fnamesv:\n",
    "    src = os.path.join(original_dir, fname)\n",
    "    dst = os.path.join(validation_cm_dir, fname)\n",
    "    shutil.copyfile(src, dst)\n",
    "\n",
    "\n",
    "# Copy first tramp images to train_tramp_dir # \n",
    "fnames = ['trampling.{}.bmp'.format(i) for i in range(154)]\n",
    "random.seed(10)\n",
    "random.shuffle(fnames)\n",
    "fnamest = fnames[0:108]\n",
    "print(len(fnamest))\n",
    "print(fnamest)\n",
    "\n",
    "for fname in fnamest:\n",
    "    src = os.path.join(original_dir, fname)\n",
    "    dst = os.path.join(train_tramp_dir, fname)\n",
    "    shutil.copyfile(src, dst)\n",
    "        \n",
    "# Copy next TM images to validation_cm_dir\n",
    "fnamesv = fnames[108:154]\n",
    "print(len(fnamesv))\n",
    "print(fnamesv)\n",
    "for fname in fnamesv:\n",
    "    src = os.path.join(original_dir, fname)\n",
    "    dst = os.path.join(validation_tramp_dir, fname)\n",
    "    shutil.copyfile(src, dst)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "efe09e3f",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "#STAGE 1: training and validation sets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "02b116cf",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "4e98e48e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 653 images belonging to 3 classes.\n",
      "Found 280 images belonging to 3 classes.\n"
     ]
    }
   ],
   "source": [
    "from tensorflow.keras.applications.resnet50 import preprocess_input #for RESNET 50\n",
    "#from tensorflow.keras.applications.imagenet_utils import decode_predictions, preprocess_input#for efficient Net\n",
    "\n",
    "#Let's train our network using data augmentation and dropout:\n",
    "train_datagen = ImageDataGenerator(\n",
    "    rotation_range=40,\n",
    "    width_shift_range=0.2,\n",
    "    height_shift_range=0.2,\n",
    "    shear_range=0.2,\n",
    "    zoom_range=0.2,\n",
    "    horizontal_flip=True,\n",
    "    preprocessing_function= \\\n",
    "    keras.applications.resnet50.preprocess_input)#OJO!!!! imagenet_utils for Efficient Net\n",
    "\n",
    "# Note that the validation data should not be augmented!\n",
    "test_datagen = ImageDataGenerator(preprocessing_function= \\\n",
    "    keras.applications.resnet50.preprocess_input)#OJO!!!\n",
    "\n",
    "train_generator = train_datagen.flow_from_directory(\n",
    "        # This is the target directory\n",
    "        train_dir,\n",
    "        # All images will be resized \n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical')#put \"categorical\" si son más de 2 categorías\n",
    "\n",
    "validation_generator = test_datagen.flow_from_directory(\n",
    "        validation_dir,\n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical',\n",
    "        shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "62521d75",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "af7b5cdc",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "#MODULE 2: CHOOSE MODEL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0d1d0fac",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "566a8bbd",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "#activate Dropout and Early Stopping"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "e59bb94e",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING:absl:`lr` is deprecated in Keras optimizer, please use `learning_rate` or use the legacy optimizer, e.g.,tf.keras.optimizers.legacy.Adagrad.\n"
     ]
    }
   ],
   "source": [
    "# for transfer learning RESNET50 with Dropout\n",
    "#import sys\n",
    "#from matplotlib import pyplot\n",
    "from tensorflow.keras.applications.resnet50 import ResNet50\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Dense\n",
    "from tensorflow.keras.layers import Flatten\n",
    "from tensorflow.keras.layers import Dropout\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "from tensorflow.keras.optimizers import Adagrad\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "\n",
    "# define cnn model\n",
    "def define_model():\n",
    "\t# load model\n",
    "\tmodel = ResNet50(include_top=False, input_shape=(250, 200, 3))\n",
    "\t# mark loaded layers as not trainable\n",
    "\tfor layer in model.layers:\n",
    "\t\tlayer.trainable = False\n",
    "\t# add new classifier layers\n",
    "\tflat1 = Flatten()(model.layers[-1].output)\n",
    "\tclass1 = Dense(128, activation='relu', kernel_initializer='he_uniform')(flat1)\n",
    "\tdrop=Dropout(0.3)(class1)\n",
    "\toutput = Dense(3, activation='softmax')(drop)\n",
    "\t# define new model\n",
    "\tmodel = Model(inputs=model.inputs, outputs=output)\n",
    "\t# compile model\n",
    "\t#opt = SGD(lr=0.001, momentum=0.9)\n",
    "\topt = Adagrad(lr=0.001)\n",
    "\tmodel.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "\treturn model\n",
    "\n",
    "# define model\n",
    "model = define_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "50a09b9a",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6fc143a8",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "#RUN MODEL:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "d401c3cf",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\oscar\\AppData\\Local\\Temp\\ipykernel_30604\\1291739942.py:2: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n",
      "  history = model.fit_generator(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "20/20 [==============================] - 25s 1s/step - loss: 1.7162 - accuracy: 0.6747 - val_loss: 0.3353 - val_accuracy: 0.8477\n",
      "Epoch 2/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.3407 - accuracy: 0.8583 - val_loss: 0.1840 - val_accuracy: 0.9375\n",
      "Epoch 3/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.3421 - accuracy: 0.8663 - val_loss: 0.1727 - val_accuracy: 0.9297\n",
      "Epoch 4/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.2810 - accuracy: 0.8712 - val_loss: 0.1630 - val_accuracy: 0.9297\n",
      "Epoch 5/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.2728 - accuracy: 0.8792 - val_loss: 0.1496 - val_accuracy: 0.9336\n",
      "Epoch 6/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.2203 - accuracy: 0.9195 - val_loss: 0.1391 - val_accuracy: 0.9375\n",
      "Epoch 7/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.2130 - accuracy: 0.9114 - val_loss: 0.1142 - val_accuracy: 0.9609\n",
      "Epoch 8/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.2147 - accuracy: 0.9179 - val_loss: 0.1017 - val_accuracy: 0.9570\n",
      "Epoch 9/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1932 - accuracy: 0.9259 - val_loss: 0.0964 - val_accuracy: 0.9609\n",
      "Epoch 10/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1721 - accuracy: 0.9291 - val_loss: 0.1041 - val_accuracy: 0.9648\n",
      "Epoch 11/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1842 - accuracy: 0.9308 - val_loss: 0.1025 - val_accuracy: 0.9688\n",
      "Epoch 12/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1658 - accuracy: 0.9340 - val_loss: 0.0994 - val_accuracy: 0.9688\n",
      "Epoch 13/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1580 - accuracy: 0.9372 - val_loss: 0.0810 - val_accuracy: 0.9727\n",
      "Epoch 14/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1631 - accuracy: 0.9420 - val_loss: 0.0832 - val_accuracy: 0.9766\n",
      "Epoch 15/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1501 - accuracy: 0.9469 - val_loss: 0.0944 - val_accuracy: 0.9727\n",
      "Epoch 16/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1734 - accuracy: 0.9356 - val_loss: 0.0891 - val_accuracy: 0.9609\n",
      "Epoch 17/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1678 - accuracy: 0.9324 - val_loss: 0.0797 - val_accuracy: 0.9648\n",
      "Epoch 18/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1376 - accuracy: 0.9517 - val_loss: 0.0720 - val_accuracy: 0.9805\n",
      "Epoch 19/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1287 - accuracy: 0.9501 - val_loss: 0.0862 - val_accuracy: 0.9531\n",
      "Epoch 20/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1097 - accuracy: 0.9614 - val_loss: 0.0933 - val_accuracy: 0.9453\n",
      "Epoch 21/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.1235 - accuracy: 0.9516 - val_loss: 0.0830 - val_accuracy: 0.9727\n",
      "Epoch 22/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1459 - accuracy: 0.9452 - val_loss: 0.0793 - val_accuracy: 0.9609\n",
      "Epoch 23/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1011 - accuracy: 0.9694 - val_loss: 0.0810 - val_accuracy: 0.9648\n",
      "Epoch 24/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1249 - accuracy: 0.9517 - val_loss: 0.0736 - val_accuracy: 0.9805\n",
      "Epoch 25/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0961 - accuracy: 0.9662 - val_loss: 0.0732 - val_accuracy: 0.9688\n",
      "Epoch 26/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1092 - accuracy: 0.9565 - val_loss: 0.0723 - val_accuracy: 0.9766\n",
      "Epoch 27/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1008 - accuracy: 0.9549 - val_loss: 0.0747 - val_accuracy: 0.9727\n",
      "Epoch 28/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0843 - accuracy: 0.9662 - val_loss: 0.0597 - val_accuracy: 0.9844\n",
      "Epoch 29/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0927 - accuracy: 0.9678 - val_loss: 0.0700 - val_accuracy: 0.9766\n",
      "Epoch 30/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1245 - accuracy: 0.9533 - val_loss: 0.0578 - val_accuracy: 0.9805\n",
      "Epoch 31/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0817 - accuracy: 0.9694 - val_loss: 0.0614 - val_accuracy: 0.9805\n",
      "Epoch 32/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1017 - accuracy: 0.9646 - val_loss: 0.0716 - val_accuracy: 0.9688\n",
      "Epoch 33/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.1199 - accuracy: 0.9469 - val_loss: 0.0706 - val_accuracy: 0.9805\n",
      "Epoch 34/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0896 - accuracy: 0.9710 - val_loss: 0.0627 - val_accuracy: 0.9844\n",
      "Epoch 35/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0918 - accuracy: 0.9646 - val_loss: 0.0569 - val_accuracy: 0.9844\n",
      "Epoch 36/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0772 - accuracy: 0.9726 - val_loss: 0.0581 - val_accuracy: 0.9844\n",
      "Epoch 37/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0856 - accuracy: 0.9742 - val_loss: 0.0665 - val_accuracy: 0.9805\n",
      "Epoch 38/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0926 - accuracy: 0.9710 - val_loss: 0.0643 - val_accuracy: 0.9766\n",
      "Epoch 39/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0862 - accuracy: 0.9703 - val_loss: 0.0615 - val_accuracy: 0.9844\n",
      "Epoch 40/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0704 - accuracy: 0.9742 - val_loss: 0.0594 - val_accuracy: 0.9805\n",
      "Epoch 41/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0675 - accuracy: 0.9807 - val_loss: 0.0576 - val_accuracy: 0.9844\n",
      "Epoch 42/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0616 - accuracy: 0.9823 - val_loss: 0.0661 - val_accuracy: 0.9805\n",
      "Epoch 43/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0866 - accuracy: 0.9662 - val_loss: 0.0549 - val_accuracy: 0.9805\n",
      "Epoch 44/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0638 - accuracy: 0.9678 - val_loss: 0.0537 - val_accuracy: 0.9844\n",
      "Epoch 45/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0837 - accuracy: 0.9662 - val_loss: 0.0562 - val_accuracy: 0.9844\n",
      "Epoch 46/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0930 - accuracy: 0.9597 - val_loss: 0.0586 - val_accuracy: 0.9805\n",
      "Epoch 47/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0855 - accuracy: 0.9726 - val_loss: 0.0618 - val_accuracy: 0.9648\n",
      "Epoch 48/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0631 - accuracy: 0.9775 - val_loss: 0.0612 - val_accuracy: 0.9844\n",
      "Epoch 49/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0675 - accuracy: 0.9791 - val_loss: 0.0594 - val_accuracy: 0.9883\n",
      "Epoch 50/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0666 - accuracy: 0.9775 - val_loss: 0.0699 - val_accuracy: 0.9805\n",
      "Epoch 51/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0737 - accuracy: 0.9726 - val_loss: 0.0550 - val_accuracy: 0.9805\n",
      "Epoch 52/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0825 - accuracy: 0.9710 - val_loss: 0.0511 - val_accuracy: 0.9805\n",
      "Epoch 53/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0741 - accuracy: 0.9775 - val_loss: 0.0524 - val_accuracy: 0.9805\n",
      "Epoch 54/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0614 - accuracy: 0.9758 - val_loss: 0.0554 - val_accuracy: 0.9805\n",
      "Epoch 55/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0474 - accuracy: 0.9791 - val_loss: 0.0498 - val_accuracy: 0.9844\n",
      "Epoch 56/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0691 - accuracy: 0.9726 - val_loss: 0.0573 - val_accuracy: 0.9844\n",
      "Epoch 57/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0552 - accuracy: 0.9758 - val_loss: 0.0561 - val_accuracy: 0.9805\n",
      "Epoch 58/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0714 - accuracy: 0.9662 - val_loss: 0.0498 - val_accuracy: 0.9805\n",
      "Epoch 59/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0661 - accuracy: 0.9758 - val_loss: 0.0577 - val_accuracy: 0.9883\n",
      "Epoch 60/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0580 - accuracy: 0.9791 - val_loss: 0.0515 - val_accuracy: 0.9805\n",
      "Epoch 61/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0772 - accuracy: 0.9710 - val_loss: 0.0598 - val_accuracy: 0.9883\n",
      "Epoch 62/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0573 - accuracy: 0.9758 - val_loss: 0.0546 - val_accuracy: 0.9883\n",
      "Epoch 63/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0544 - accuracy: 0.9823 - val_loss: 0.0554 - val_accuracy: 0.9883\n",
      "Epoch 64/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0613 - accuracy: 0.9758 - val_loss: 0.0527 - val_accuracy: 0.9805\n",
      "Epoch 65/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0661 - accuracy: 0.9710 - val_loss: 0.0586 - val_accuracy: 0.9883\n",
      "Epoch 66/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0576 - accuracy: 0.9855 - val_loss: 0.0599 - val_accuracy: 0.9766\n",
      "Epoch 67/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0513 - accuracy: 0.9775 - val_loss: 0.0532 - val_accuracy: 0.9844\n",
      "Epoch 68/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0467 - accuracy: 0.9823 - val_loss: 0.0548 - val_accuracy: 0.9805\n",
      "Epoch 69/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0506 - accuracy: 0.9791 - val_loss: 0.0527 - val_accuracy: 0.9805\n",
      "Epoch 70/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0622 - accuracy: 0.9775 - val_loss: 0.0611 - val_accuracy: 0.9844\n",
      "Epoch 71/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0556 - accuracy: 0.9758 - val_loss: 0.0552 - val_accuracy: 0.9844\n",
      "Epoch 72/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0665 - accuracy: 0.9726 - val_loss: 0.0566 - val_accuracy: 0.9805\n",
      "Epoch 73/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0738 - accuracy: 0.9710 - val_loss: 0.0539 - val_accuracy: 0.9805\n",
      "Epoch 74/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0574 - accuracy: 0.9871 - val_loss: 0.0562 - val_accuracy: 0.9805\n",
      "Epoch 75/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0574 - accuracy: 0.9791 - val_loss: 0.0521 - val_accuracy: 0.9805\n",
      "Epoch 76/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0527 - accuracy: 0.9791 - val_loss: 0.0503 - val_accuracy: 0.9844\n",
      "Epoch 77/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0521 - accuracy: 0.9828 - val_loss: 0.0471 - val_accuracy: 0.9805\n",
      "Epoch 78/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0643 - accuracy: 0.9742 - val_loss: 0.0474 - val_accuracy: 0.9844\n",
      "Epoch 79/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0471 - accuracy: 0.9823 - val_loss: 0.0443 - val_accuracy: 0.9844\n",
      "Epoch 80/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0492 - accuracy: 0.9855 - val_loss: 0.0479 - val_accuracy: 0.9883\n",
      "Epoch 81/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0381 - accuracy: 0.9887 - val_loss: 0.0493 - val_accuracy: 0.9844\n",
      "Epoch 82/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0350 - accuracy: 0.9936 - val_loss: 0.0510 - val_accuracy: 0.9844\n",
      "Epoch 83/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0542 - accuracy: 0.9807 - val_loss: 0.0466 - val_accuracy: 0.9883\n",
      "Epoch 84/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0607 - accuracy: 0.9807 - val_loss: 0.0543 - val_accuracy: 0.9844\n",
      "Epoch 85/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0598 - accuracy: 0.9839 - val_loss: 0.0499 - val_accuracy: 0.9844\n",
      "Epoch 86/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0481 - accuracy: 0.9855 - val_loss: 0.0533 - val_accuracy: 0.9844\n",
      "Epoch 87/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0436 - accuracy: 0.9855 - val_loss: 0.0517 - val_accuracy: 0.9844\n",
      "Epoch 88/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0496 - accuracy: 0.9797 - val_loss: 0.0490 - val_accuracy: 0.9844\n",
      "Epoch 89/100\n",
      "20/20 [==============================] - 23s 1s/step - loss: 0.0440 - accuracy: 0.9839 - val_loss: 0.0499 - val_accuracy: 0.9844\n",
      "Epoch 90/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0503 - accuracy: 0.9807 - val_loss: 0.0463 - val_accuracy: 0.9844\n",
      "Epoch 91/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0352 - accuracy: 0.9871 - val_loss: 0.0482 - val_accuracy: 0.9844\n",
      "Epoch 92/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0274 - accuracy: 0.9919 - val_loss: 0.0495 - val_accuracy: 0.9844\n",
      "Epoch 93/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0505 - accuracy: 0.9823 - val_loss: 0.0487 - val_accuracy: 0.9844\n",
      "Epoch 94/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0467 - accuracy: 0.9791 - val_loss: 0.0472 - val_accuracy: 0.9805\n",
      "Epoch 95/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0500 - accuracy: 0.9855 - val_loss: 0.0485 - val_accuracy: 0.9805\n",
      "Epoch 96/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0456 - accuracy: 0.9839 - val_loss: 0.0504 - val_accuracy: 0.9805\n",
      "Epoch 97/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0543 - accuracy: 0.9855 - val_loss: 0.0403 - val_accuracy: 0.9844\n",
      "Epoch 98/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0492 - accuracy: 0.9758 - val_loss: 0.0460 - val_accuracy: 0.9844\n",
      "Epoch 99/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0530 - accuracy: 0.9855 - val_loss: 0.0470 - val_accuracy: 0.9844\n",
      "Epoch 100/100\n",
      "20/20 [==============================] - 24s 1s/step - loss: 0.0453 - accuracy: 0.9839 - val_loss: 0.0443 - val_accuracy: 0.9844\n"
     ]
    }
   ],
   "source": [
    "# define model\n",
    "history = model.fit_generator(\n",
    "      train_generator,\n",
    "      steps_per_epoch=20,\n",
    "      epochs=100,\n",
    "      validation_data=validation_generator,\n",
    "      validation_steps=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "d9dc8b61",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\oscar\\AppData\\Local\\Temp\\ipykernel_30604\\1979981568.py:1: UserWarning: `Model.predict_generator` is deprecated and will be removed in a future version. Please use `Model.predict`, which supports generators.\n",
      "  predictions=model.predict_generator(validation_generator, steps=len(validation_generator), verbose=1)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9/9 [==============================] - 7s 751ms/step\n"
     ]
    }
   ],
   "source": [
    "predictions=model.predict_generator(validation_generator, steps=len(validation_generator), verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "ee267bdf",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "val_preds = np.argmax(predictions, axis=1)\n",
    "val_trues = validation_generator.classes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "8890e267",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\oscar\\AppData\\Local\\Temp\\ipykernel_30604\\335169549.py:7: UserWarning: `Model.predict_generator` is deprecated and will be removed in a future version. Please use `Model.predict`, which supports generators.\n",
      "  Y_pred = model.predict_generator(validation_generator, num_of_test_samples // batch_size+1)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix\n",
      "[[ 44   1   0]\n",
      " [  1 187   1]\n",
      " [  0   1  45]]\n"
     ]
    }
   ],
   "source": [
    "#modify:\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import classification_report\n",
    "import numpy as np\n",
    "num_of_test_samples = 280 #number of testing samples\n",
    "batch_size=32 #batch size for the validation set\n",
    "Y_pred = model.predict_generator(validation_generator, num_of_test_samples // batch_size+1)\n",
    "y_pred = np.argmax(Y_pred, axis=1)\n",
    "print('Confusion Matrix')\n",
    "print(confusion_matrix(validation_generator.classes, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "1fb02f25",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification Report\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          tm       0.98      0.98      0.98        45\n",
      "          cm       0.99      0.99      0.99       189\n",
      "         tmp       0.98      0.98      0.98        46\n",
      "\n",
      "    accuracy                           0.99       280\n",
      "   macro avg       0.98      0.98      0.98       280\n",
      "weighted avg       0.99      0.99      0.99       280\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print('Classification Report')\n",
    "target_names = [ \"tm\",'cm', 'tmp']\n",
    "print(classification_report(validation_generator.classes, y_pred, target_names=target_names))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "aa8f5d43",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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odfrERQUZJIeFBSErKwsq/tER0djzZo1iIuLg6enJ4KDg1GpUiV88MEHhjwNGjTAqlWr8NVXX2HdunXw9vZG27Ztce7cOZtlmT17NgIDAw1bWFiYmpeimHmTEBEREZU8pzrd6szG9gohLNJkJ0+exCuvvIK3334bR44cwXfffYf09HSMGjXKkOfxxx/HwIED0bRpU8TExGDjxo2oV6+eSVBjbuLEicjOzjZsly5dcualOMQmISIiotKnarXmatWqwd3d3aI25dq1axa1LrLZs2ejbdu2eP311wEATZo0QcWKFRETE4OZM2cixMr0sG5ubnjsscfs1rB4eXnBy8tLTfGdwiYhIiKi0qeqhsXT0xNRUVFITk42SU9OTkZ0dLTVfe7evQs3N9PTuP//oTXCxvLHQgikpaVZDWZK2rJlwNatQKtWpV0SIiKiB5eqGhYAGDduHOLj49GyZUu0adMGH330ETIyMgxNPBMnTsSVK1fw2WefAQCeeuopjBgxAkuXLkWXLl2QmZmJhIQEtGrVCjVr1gQATJ8+HY8//jgefvhh5OTkYNGiRUhLS8PixYtd+FKdExVV2iUgIiIi1QFLXFwcbty4gRkzZiAzMxONGzfG1q1bER4eDgDIzMw0mZNlyJAhuHXrFj788EOMHz8elSpVQqdOnTBnzhxDnr///hsjR45EVlYWAgMD0bx5c+zbtw+tWK1BREREAHTCVrtMGZOTk4PAwEBkZ2cjICCgtItDRERECii9f3MtISIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeU4FLEuWLEFkZCS8vb0RFRWFlJQUu/nXrFmDpk2bwtfXFyEhIXjhhRdw48YNkzyJiYlo1KgRvLy80KhRI2zevNmZohEREVE5pDpg2bBhAxISEjBp0iQcPXoUMTEx6NatGzIyMqzm/+GHHzBo0CAMGzYMJ06cwBdffIFDhw5h+PDhhjz79+9HXFwc4uPjcezYMcTHx+PZZ5/FgQMHnH9lREREVG7ohBBCzQ6tW7dGixYtsHTpUkNaw4YN0bt3b8yePdsi///+9z8sXboU58+fN6R98MEHeP/993Hp0iUAQFxcHHJycrBt2zZDnq5du6Jy5cpYt26d1XLk5eUhLy/P8DgnJwdhYWHIzs5GQECAmpdEREREpSQnJweBgYEO79+qalju3buHI0eOIDY21iQ9NjYWqampVveJjo7G5cuXsXXrVggh8Mcff2DTpk3o0aOHIc/+/fstjtmlSxebxwSA2bNnIzAw0LCFhYWpeSlERERUhqgKWK5fvw69Xo+goCCT9KCgIGRlZVndJzo6GmvWrEFcXBw8PT0RHByMSpUq4YMPPjDkycrKUnVMAJg4cSKys7MNm1xbQ0REROWPU51udTqdyWMhhEWa7OTJk3jllVfw9ttv48iRI/juu++Qnp6OUaNGOX1MAPDy8kJAQIDJRkREROVTBTWZq1WrBnd3d4uaj2vXrlnUkMhmz56Ntm3b4vXXXwcANGnSBBUrVkRMTAxmzpyJkJAQBAcHqzomERERPVhU1bB4enoiKioKycnJJunJycmIjo62us/du3fh5mZ6Gnd3dwBSLQoAtGnTxuKY27dvt3lMIiIierCoqmEBgHHjxiE+Ph4tW7ZEmzZt8NFHHyEjI8PQxDNx4kRcuXIFn332GQDgqaeewogRI7B06VJ06dIFmZmZSEhIQKtWrVCzZk0AwNixY9GuXTvMmTMHvXr1wpdffokdO3bghx9+cOFLJSIiorJKdcASFxeHGzduYMaMGcjMzETjxo2xdetWhIeHAwAyMzNN5mQZMmQIbt26hQ8//BDjx49HpUqV0KlTJ8yZM8eQJzo6GuvXr8fkyZMxZcoUPPTQQ9iwYQNat27tgpdIREREZZ3qeVi0Suk4biIiItKOYpmHhYiIiKg0MGAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmMWAhIiIizWPAQkRERJrHgIWIiIg0jwELERERaR4DFiIiItI8BixERESkeQxYiIiISPMYsBAREZHmORWwLFmyBJGRkfD29kZUVBRSUlJs5h0yZAh0Op3F9sgjjxjyrFq1ymqe3NxcZ4pHRERE5YzqgGXDhg1ISEjApEmTcPToUcTExKBbt27IyMiwmn/hwoXIzMw0bJcuXUKVKlXwzDPPmOQLCAgwyZeZmQlvb2/nXhURERGVK6oDlnnz5mHYsGEYPnw4GjZsiAULFiAsLAxLly61mj8wMBDBwcGG7fDhw/jrr7/wwgsvmOTT6XQm+YKDg517RURERFTuqApY7t27hyNHjiA2NtYkPTY2FqmpqYqOsXz5cjz55JMIDw83Sb99+zbCw8MRGhqKnj174ujRo3aPk5eXh5ycHJONiIiIyidVAcv169eh1+sRFBRkkh4UFISsrCyH+2dmZmLbtm0YPny4SXqDBg2watUqfPXVV1i3bh28vb3Rtm1bnDt3zuaxZs+ejcDAQMMWFham5qUQERFRGeJUp1udTmfyWAhhkWbNqlWrUKlSJfTu3dsk/fHHH8fAgQPRtGlTxMTEYOPGjahXrx4++OADm8eaOHEisrOzDdulS5eceSlERERUBlRQk7latWpwd3e3qE25du2aRa2LOSEEVqxYgfj4eHh6etrN6+bmhscee8xuDYuXlxe8vLyUF56IiIjKLFU1LJ6enoiKikJycrJJenJyMqKjo+3uu3fvXvz2228YNmyYw/MIIZCWloaQkBA1xSMiIqJySlUNCwCMGzcO8fHxaNmyJdq0aYOPPvoIGRkZGDVqFACpqebKlSv47LPPTPZbvnw5WrdujcaNG1scc/r06Xj88cfx8MMPIycnB4sWLUJaWhoWL17s5MsiIiKi8kR1wBIXF4cbN25gxowZyMzMROPGjbF161bDqJ/MzEyLOVmys7ORmJiIhQsXWj3m33//jZEjRyIrKwuBgYFo3rw59u3bh1atWjnx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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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IUxXrlyBWq3WLdqHKwHSI7oDAgIQGBiI8+fPIzAwECNGjMDp06dNrR4RERFVQiV6+KFCocDu3bsLfeJldHQ0evbsibt376J69eoGywQEBECj0eDQoUO6df369UONGjUMPskSADIyMpCRkaF7rdFo4O7uzocfEhERVSCye/ihj48PXFxc0KtXL0RFRem9FxsbC39/f711ffv2RUxMTIH7CwoKgkql0i3u7u6lUm8iIiIqf6UeWFxcXLBp0yaEh4cjIiICnp6e6NWrF06cOKErk5KSAicnJ73tnJyckJKSUuB+586di7S0NN2SlJRUaudARERE5avURwl5enrC09NT99rX1xdJSUn49NNP0a1bN936vBMTCSEKnaxIqVRCqVSav8JEREQkO+UyNX/nzp1x9epV3WtnZ+d8rSmpqan5Wl2IiIjo2VQugSUuLg4uLi66176+voiMjNQrc/jwYfj5+ZV11YiIiEiGTL4llJ6ejmvXruleJyQkID4+Ho6OjqhXrx7mzp2L5ORkbN++HQAQHByM+vXro0WLFsjMzMQ333yD8PBwhIeH6/Yxbdo0dOvWDStXrsSQIUOwd+9eHDlyBKdOnTLDKRIREVFFZ3JgOXv2LHr27Kl7PWPGDADAmDFjEBISArVajcTERN37mZmZeO+995CcnAw7Ozu0aNECBw4cwIABA3Rl/Pz8sHPnTsyfPx8LFixAo0aNEBYWhk6dOpXk3IiIiKiSKNE8LHJi7DhuIiIikg/ZzcNCREREVFwMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7DCxEREQkewwsREREJHsMLERERCR7JgeWEydOYPDgwXB1dYVCocCePXsKLR8REYE+ffqgdu3acHBwgK+vL3766Se9MiEhIVAoFPmWx48fm1o9IiIiqoRMDiwPHjyAt7c3Pv/8c6PKnzhxAn369MHBgwdx7tw59OzZE4MHD0ZcXJxeOQcHB6jVar3F1tbW1OoRERFRJWRl6gb9+/dH//79jS4fHBys93rFihXYu3cv9u/fDx8fH916hUIBZ2dnU6tDREREz4Ay78OSk5OD+/fvw9HRUW99eno6PDw84ObmhkGDBuVrgckrIyMDGo1GbyEiIqLKqcwDy6pVq/DgwQOMGDFCt65Zs2YICQnBvn37EBoaCltbW3Tp0gVXr14tcD9BQUFQqVS6xd3dvSyqT0REROVAIYQQxd5YocDu3bsxdOhQo8qHhoZi4sSJ2Lt3L3r37l1guZycHLRt2xbdunXDunXrDJbJyMhARkaG7rVGo4G7uzvS0tLg4OBg0nkQERFR+dBoNFCpVEV+f5vch6W4wsLCMGHCBHz33XeFhhUAsLCwQIcOHQptYVEqlVAqleauJhEREclQmdwSCg0NxdixY7Fjxw4MHDiwyPJCCMTHx8PFxaUMakdERERyZ3ILS3p6Oq5du6Z7nZCQgPj4eDg6OqJevXqYO3cukpOTsX37dgBSWBk9ejTWrl2Lzp07IyUlBQBgZ2cHlUoFAFi8eDE6d+6MJk2aQKPRYN26dYiPj8f69evNcY5ERERUwZncwnL27Fn4+PjohiTPmDEDPj4++PDDDwEAarUaiYmJuvJffvklsrKy8NZbb8HFxUW3TJs2TVfm3r17mDx5Mpo3bw5/f38kJyfjxIkT6NixY0nPj4iIiCqBEnW6lRNjO+0QERGRfBj7/c1nCREREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkeyZHFhOnDiBwYMHw9XVFQqFAnv27Clym+PHj6Ndu3awtbVFw4YN8cUXX+QrEx4eDi8vLyiVSnh5eWH37t2mVo2IiIgqKZMDy4MHD+Dt7Y3PP//cqPIJCQkYMGAAunbtiri4OHzwwQd45513EB4erisTGxuLgIAABAYG4vz58wgMDMSIESNw+vRpU6tHRERElZBCCCGKvbFCgd27d2Po0KEFlpk9ezb27duHS5cu6dZNmTIF58+fR2xsLAAgICAAGo0Ghw4d0pXp168fatSogdDQUKPqotFooFKpkJaWBgcHh+KdEBEREZUpY7+/S70PS2xsLPz9/fXW9e3bF2fPnsWTJ08KLRMTE1PgfjMyMqDRaPQWIiIiqpxKPbCkpKTAyclJb52TkxOysrJw69atQsukpKQUuN+goCCoVCrd4u7ubv7KExERkSyUySghhUKh91p7Fyr3ekNl8q7Lbe7cuUhLS9MtSUlJZqwxERERyYlVaR/A2dk5X0tJamoqrKysULNmzULL5G11yU2pVEKpVJq/wkRERCQ7pd7C4uvri8jISL11hw8fRvv27WFtbV1oGT8/v9KuHhEREVUAJrewpKen49q1a7rXCQkJiI+Ph6OjI+rVq4e5c+ciOTkZ27dvByCNCPr8888xY8YMTJo0CbGxsdiyZYve6J9p06ahW7duWLlyJYYMGYK9e/fiyJEjOHXqlBlOkYiIiCo6k1tYzp49Cx8fH/j4+AAAZsyYAR8fH3z44YcAALVajcTERF35Bg0a4ODBg4iOjkabNm2wdOlSrFu3Di+99JKujJ+fH3bu3Ilt27ahdevWCAkJQVhYGDp16lTS8yMiIqJKoETzsMgJ52EhIiKqeGQzDwsRERFRSTGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsMbAQERGR7DGwEBERkewxsBAREZHsFSuwbNiwAQ0aNICtrS3a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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "#PLOT\n",
    "acc = history.history['accuracy']\n",
    "val_acc = history.history['val_accuracy']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "epochs = range(len(acc))\n",
    "\n",
    "plt.plot(epochs, acc, 'bo', label='Training acc')\n",
    "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ad6ed72d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.preprocessing import label_binarize\n",
    "\n",
    "# Step 1: Binarize the true labels\n",
    "val_trues_bin = label_binarize(val_trues, classes=[0, 1, 2])  # assuming classes are 0, 1, 2\n",
    "\n",
    "# Step 2: Calculate ROC-AUC\n",
    "roc_auc = roc_auc_score(val_trues_bin, predictions, average='macro', multi_class='ovr')\n",
    "\n",
    "print(f'Multi-class ROC-AUC: {roc_auc:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "34cbf1e7",
   "metadata": {
    "collapsed": true,
    "jupyter": {
     "outputs_hidden": true
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "from sklearn.preprocessing import label_binarize\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "# Step 1: Binarize the true labels\n",
    "n_classes = predictions.shape[1]  # should be 3\n",
    "val_trues_bin = label_binarize(val_trues, classes=[0, 1, 2])  # shape: (n_samples, n_classes)\n",
    "\n",
    "# Step 2: Compute FPR, TPR, and ROC AUC for each class\n",
    "fpr = dict()\n",
    "tpr = dict()\n",
    "roc_auc = dict()\n",
    "for i in range(n_classes):\n",
    "    fpr[i], tpr[i], _ = roc_curve(val_trues_bin[:, i], predictions[:, i])\n",
    "    roc_auc[i] = auc(fpr[i], tpr[i])\n",
    "\n",
    "# Step 3: Compute macro-average ROC curve\n",
    "# First aggregate all false positive rates\n",
    "all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))\n",
    "\n",
    "# Then interpolate all ROC curves at these points\n",
    "mean_tpr = np.zeros_like(all_fpr)\n",
    "for i in range(n_classes):\n",
    "    mean_tpr += np.interp(all_fpr, fpr[i], tpr[i])\n",
    "\n",
    "# Average it and compute AUC\n",
    "mean_tpr /= n_classes\n",
    "fpr[\"macro\"] = all_fpr\n",
    "tpr[\"macro\"] = mean_tpr\n",
    "roc_auc[\"macro\"] = auc(fpr[\"macro\"], tpr[\"macro\"])\n",
    "\n",
    "# Step 4: Plot\n",
    "plt.figure(figsize=(8, 6))\n",
    "colors = ['blue', 'green', 'red']\n",
    "for i in range(n_classes):\n",
    "    plt.plot(fpr[i], tpr[i], color=colors[i], lw=2,\n",
    "             label=f'Class {i} (AUC = {roc_auc[i]:.2f})')\n",
    "\n",
    "plt.plot(fpr[\"macro\"], tpr[\"macro\"], color='darkorange', linestyle='--',\n",
    "         label=f'Macro-average (AUC = {roc_auc[\"macro\"]:.2f})', lw=2)\n",
    "\n",
    "plt.plot([0, 1], [0, 1], 'k--', lw=1)\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Multi-Class ROC Curve')\n",
    "plt.legend(loc='lower right')\n",
    "plt.grid()\n",
    "plt.tight_layout()\n",
    "\n",
    "# 💾 Save the figure before displaying\n",
    "#plt.savefig(\"roc_curve.png\", dpi=300)  # You can change the filename and format if needed\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6d2d3091",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5bbec4e9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5d4730ab",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "77f7809c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# STAGE 2: with color agnostic:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "989bbd75",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "82580824",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras.applications.resnet50 import preprocess_input\n",
    "import cv2\n",
    "\n",
    "def random_3channel_grayscale_augmentations(image):\n",
    "    # Ensure the input is a 3-channel grayscale image\n",
    "    if len(image.shape) != 3 or image.shape[2] != 3:\n",
    "        raise ValueError(\"Input image must be a 3-channel grayscale image.\")\n",
    "    \n",
    "    # Ensure image values are in the correct range\n",
    "    image = np.clip(image, 0, 255).astype(np.uint8)\n",
    "    \n",
    "    # Process each channel independently\n",
    "    for channel in range(3):\n",
    "        random_value = np.random.randint(0, 3)  # Randomly choose between brightness, contrast, and sharpening\n",
    "        \n",
    "        if random_value == 0:\n",
    "            # Randomly adjust brightness\n",
    "            brightness_scale = np.random.uniform(0.8, 1.2)\n",
    "            image[:, :, channel] = np.clip(image[:, :, channel] * brightness_scale, 0, 255).astype(np.uint8)\n",
    "        elif random_value == 1:\n",
    "            # Randomly adjust contrast\n",
    "            contrast_scale = np.random.uniform(0.8, 1.2)\n",
    "            mean_intensity = np.mean(image[:, :, channel])\n",
    "            image[:, :, channel] = np.clip((image[:, :, channel] - mean_intensity) * contrast_scale + mean_intensity, 0, 255).astype(np.uint8)\n",
    "        else:\n",
    "            # Apply sharpening\n",
    "            kernel = np.array([[0, -1, 0], \n",
    "                               [-1, 5, -1], \n",
    "                               [0, -1, 0]])\n",
    "            image[:, :, channel] = cv2.filter2D(image[:, :, channel], -1, kernel)\n",
    "    \n",
    "    # Convert image to float32 for ResNet50 preprocessing\n",
    "    image = image.astype(np.float32)\n",
    "    \n",
    "    # Apply ResNet50 preprocessing\n",
    "    augmented_image = preprocess_input(image)\n",
    "    \n",
    "    return augmented_image\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "a0782f37",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Found 653 images belonging to 3 classes.\n",
      "Found 280 images belonging to 3 classes.\n"
     ]
    }
   ],
   "source": [
    "from tensorflow.keras.applications.resnet50 import preprocess_input #for RESNET 50\n",
    "#from keras.applications.imagenet_utils import decode_predictions, preprocess_input#for efficient Net\n",
    "#from tensorflow.keras.applications.imagenet_utils import decode_predictions, preprocess_input#for efficient Net\n",
    "\n",
    "#Let's train our network using data augmentation and dropout:\n",
    "train_datagen = ImageDataGenerator(\n",
    "    rotation_range=40,\n",
    "    width_shift_range=0.2,\n",
    "    height_shift_range=0.2,\n",
    "    shear_range=0.2,\n",
    "    zoom_range=0.2,\n",
    "    horizontal_flip=True,\n",
    "    preprocessing_function=random_3channel_grayscale_augmentations)\n",
    "\n",
    "# Note that the validation data should not be augmented!\n",
    "test_datagen = ImageDataGenerator(preprocessing_function= \\\n",
    "    keras.applications.resnet50.preprocess_input)#OJO!!!\n",
    "\n",
    "train_generator = train_datagen.flow_from_directory(\n",
    "        # This is the target directory\n",
    "        train_dir,\n",
    "        # All images will be resized \n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical')#put \"categorical\" si son más de 2 categorías\n",
    "\n",
    "validation_generator = test_datagen.flow_from_directory(\n",
    "        validation_dir,\n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical',\n",
    "        shuffle=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a62e7a74",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for transfer learning RESNET50 with Dropout\n",
    "#import sys\n",
    "#from matplotlib import pyplot\n",
    "from tensorflow.keras.applications.resnet50 import ResNet50\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Dense\n",
    "from tensorflow.keras.layers import Flatten\n",
    "from tensorflow.keras.layers import Dropout\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "from tensorflow.keras.optimizers import Adagrad\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "\n",
    "# define cnn model\n",
    "def define_model():\n",
    "\t# load model\n",
    "\tmodel = ResNet50(include_top=False, input_shape=(250, 200, 3))\n",
    "\t# mark loaded layers as not trainable\n",
    "\tfor layer in model.layers:\n",
    "\t\tlayer.trainable = False\n",
    "\t# add new classifier layers\n",
    "\tflat1 = Flatten()(model.layers[-1].output)\n",
    "\tclass1 = Dense(128, activation='relu', kernel_initializer='he_uniform')(flat1)\n",
    "\tdrop=Dropout(0.3)(class1)\n",
    "\toutput = Dense(3, activation='softmax')(drop)\n",
    "\t# define new model\n",
    "\tmodel = Model(inputs=model.inputs, outputs=output)\n",
    "\t# compile model\n",
    "\t#opt = SGD(lr=0.001, momentum=0.9)\n",
    "\topt = Adagrad(lr=0.001)\n",
    "\tmodel.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "\treturn model\n",
    "\n",
    "# define model\n",
    "model = define_model()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "570b0d28",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\IDEA\\Anaconda3\\envs\\gputest\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py:1844: UserWarning: `Model.fit_generator` is deprecated and will be removed in a future version. Please use `Model.fit`, which supports generators.\n",
      "  warnings.warn('`Model.fit_generator` is deprecated and '\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100\n",
      "20/20 [==============================] - 33s 1s/step - loss: 3.5350 - accuracy: 0.5253 - val_loss: 0.4353 - val_accuracy: 0.8359\n",
      "Epoch 2/100\n",
      "20/20 [==============================] - 16s 797ms/step - loss: 0.4824 - accuracy: 0.7768 - val_loss: 0.3205 - val_accuracy: 0.8633\n",
      "Epoch 3/100\n",
      "20/20 [==============================] - 16s 799ms/step - loss: 0.3851 - accuracy: 0.8238 - val_loss: 0.2457 - val_accuracy: 0.8828\n",
      "Epoch 4/100\n",
      "20/20 [==============================] - 16s 793ms/step - loss: 0.3883 - accuracy: 0.8325 - val_loss: 0.2071 - val_accuracy: 0.9062\n",
      "Epoch 5/100\n",
      "20/20 [==============================] - 16s 791ms/step - loss: 0.3213 - accuracy: 0.8902 - val_loss: 0.1844 - val_accuracy: 0.9375\n",
      "Epoch 6/100\n",
      "20/20 [==============================] - 16s 790ms/step - loss: 0.2665 - accuracy: 0.8696 - val_loss: 0.1446 - val_accuracy: 0.9609\n",
      "Epoch 7/100\n",
      "20/20 [==============================] - 16s 793ms/step - loss: 0.3014 - accuracy: 0.8895 - val_loss: 0.1578 - val_accuracy: 0.9453\n",
      "Epoch 8/100\n",
      "20/20 [==============================] - 16s 808ms/step - loss: 0.2619 - accuracy: 0.9040 - val_loss: 0.2348 - val_accuracy: 0.8906\n",
      "Epoch 9/100\n",
      "20/20 [==============================] - 16s 798ms/step - loss: 0.2161 - accuracy: 0.9385 - val_loss: 0.1304 - val_accuracy: 0.9648\n",
      "Epoch 10/100\n",
      "20/20 [==============================] - 16s 786ms/step - loss: 0.2076 - accuracy: 0.9248 - val_loss: 0.1552 - val_accuracy: 0.9453\n",
      "Epoch 11/100\n",
      "20/20 [==============================] - 16s 801ms/step - loss: 0.1865 - accuracy: 0.9224 - val_loss: 0.1141 - val_accuracy: 0.9570\n",
      "Epoch 12/100\n",
      "20/20 [==============================] - 16s 799ms/step - loss: 0.2217 - accuracy: 0.9109 - val_loss: 0.1068 - val_accuracy: 0.9570\n",
      "Epoch 13/100\n",
      "20/20 [==============================] - 16s 802ms/step - loss: 0.1709 - accuracy: 0.9286 - val_loss: 0.1448 - val_accuracy: 0.9414\n",
      "Epoch 14/100\n",
      "20/20 [==============================] - 16s 809ms/step - loss: 0.2230 - accuracy: 0.9024 - val_loss: 0.1105 - val_accuracy: 0.9648\n",
      "Epoch 15/100\n",
      "20/20 [==============================] - 17s 846ms/step - loss: 0.1465 - accuracy: 0.9390 - val_loss: 0.1214 - val_accuracy: 0.9570\n",
      "Epoch 16/100\n",
      "20/20 [==============================] - 17s 857ms/step - loss: 0.1777 - accuracy: 0.9380 - val_loss: 0.1149 - val_accuracy: 0.9609\n",
      "Epoch 17/100\n",
      "20/20 [==============================] - 17s 853ms/step - loss: 0.1900 - accuracy: 0.9238 - val_loss: 0.1300 - val_accuracy: 0.9570\n",
      "Epoch 18/100\n",
      "20/20 [==============================] - 17s 860ms/step - loss: 0.1414 - accuracy: 0.9499 - val_loss: 0.1091 - val_accuracy: 0.9570\n",
      "Epoch 19/100\n",
      "20/20 [==============================] - 17s 854ms/step - loss: 0.1702 - accuracy: 0.9302 - val_loss: 0.1292 - val_accuracy: 0.9492\n",
      "Epoch 20/100\n",
      "20/20 [==============================] - 16s 820ms/step - loss: 0.1406 - accuracy: 0.9378 - val_loss: 0.1088 - val_accuracy: 0.9727\n",
      "Epoch 21/100\n",
      "20/20 [==============================] - 17s 826ms/step - loss: 0.1554 - accuracy: 0.9423 - val_loss: 0.1002 - val_accuracy: 0.9727\n",
      "Epoch 22/100\n",
      "20/20 [==============================] - 17s 833ms/step - loss: 0.1119 - accuracy: 0.9619 - val_loss: 0.0886 - val_accuracy: 0.9844\n",
      "Epoch 23/100\n",
      "20/20 [==============================] - 17s 832ms/step - loss: 0.1758 - accuracy: 0.9195 - val_loss: 0.0847 - val_accuracy: 0.9805\n",
      "Epoch 24/100\n",
      "20/20 [==============================] - 17s 833ms/step - loss: 0.0932 - accuracy: 0.9641 - val_loss: 0.0968 - val_accuracy: 0.9648\n",
      "Epoch 25/100\n",
      "20/20 [==============================] - 17s 833ms/step - loss: 0.1128 - accuracy: 0.9531 - val_loss: 0.0991 - val_accuracy: 0.9727\n",
      "Epoch 26/100\n",
      "20/20 [==============================] - 16s 817ms/step - loss: 0.1432 - accuracy: 0.9292 - val_loss: 0.0813 - val_accuracy: 0.9844\n",
      "Epoch 27/100\n",
      "20/20 [==============================] - 16s 826ms/step - loss: 0.1257 - accuracy: 0.9592 - val_loss: 0.0797 - val_accuracy: 0.9805\n",
      "Epoch 28/100\n",
      "20/20 [==============================] - 16s 804ms/step - loss: 0.1197 - accuracy: 0.9493 - val_loss: 0.0843 - val_accuracy: 0.9766\n",
      "Epoch 29/100\n",
      "20/20 [==============================] - 16s 817ms/step - loss: 0.1132 - accuracy: 0.9591 - val_loss: 0.0736 - val_accuracy: 0.9805\n",
      "Epoch 30/100\n",
      "20/20 [==============================] - 16s 802ms/step - loss: 0.1338 - accuracy: 0.9298 - val_loss: 0.0705 - val_accuracy: 0.9727\n",
      "Epoch 31/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.1337 - accuracy: 0.9528 - val_loss: 0.0752 - val_accuracy: 0.9805\n",
      "Epoch 32/100\n",
      "20/20 [==============================] - 16s 802ms/step - loss: 0.1530 - accuracy: 0.9418 - val_loss: 0.0756 - val_accuracy: 0.9805\n",
      "Epoch 33/100\n",
      "20/20 [==============================] - 16s 818ms/step - loss: 0.1200 - accuracy: 0.9526 - val_loss: 0.0764 - val_accuracy: 0.9844\n",
      "Epoch 34/100\n",
      "20/20 [==============================] - 16s 806ms/step - loss: 0.1214 - accuracy: 0.9554 - val_loss: 0.1053 - val_accuracy: 0.9688\n",
      "Epoch 35/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.1262 - accuracy: 0.9510 - val_loss: 0.0799 - val_accuracy: 0.9805\n",
      "Epoch 36/100\n",
      "20/20 [==============================] - 16s 818ms/step - loss: 0.1048 - accuracy: 0.9693 - val_loss: 0.0819 - val_accuracy: 0.9727\n",
      "Epoch 37/100\n",
      "20/20 [==============================] - 16s 821ms/step - loss: 0.1178 - accuracy: 0.9496 - val_loss: 0.0939 - val_accuracy: 0.9727\n",
      "Epoch 38/100\n",
      "20/20 [==============================] - 16s 802ms/step - loss: 0.1040 - accuracy: 0.9611 - val_loss: 0.0775 - val_accuracy: 0.9727\n",
      "Epoch 39/100\n",
      "20/20 [==============================] - 16s 808ms/step - loss: 0.0892 - accuracy: 0.9665 - val_loss: 0.0633 - val_accuracy: 0.9727\n",
      "Epoch 40/100\n",
      "20/20 [==============================] - 16s 810ms/step - loss: 0.1066 - accuracy: 0.9605 - val_loss: 0.0835 - val_accuracy: 0.9766\n",
      "Epoch 41/100\n",
      "20/20 [==============================] - 16s 803ms/step - loss: 0.0956 - accuracy: 0.9641 - val_loss: 0.0856 - val_accuracy: 0.9727\n",
      "Epoch 42/100\n",
      "20/20 [==============================] - 16s 813ms/step - loss: 0.1080 - accuracy: 0.9550 - val_loss: 0.0846 - val_accuracy: 0.9805\n",
      "Epoch 43/100\n",
      "20/20 [==============================] - 16s 800ms/step - loss: 0.1062 - accuracy: 0.9639 - val_loss: 0.0957 - val_accuracy: 0.9609\n",
      "Epoch 44/100\n",
      "20/20 [==============================] - 16s 808ms/step - loss: 0.1218 - accuracy: 0.9605 - val_loss: 0.0989 - val_accuracy: 0.9727\n",
      "Epoch 45/100\n",
      "20/20 [==============================] - 16s 813ms/step - loss: 0.0954 - accuracy: 0.9706 - val_loss: 0.0755 - val_accuracy: 0.9766\n",
      "Epoch 46/100\n",
      "20/20 [==============================] - 16s 806ms/step - loss: 0.0819 - accuracy: 0.9745 - val_loss: 0.0688 - val_accuracy: 0.9766\n",
      "Epoch 47/100\n",
      "20/20 [==============================] - 16s 817ms/step - loss: 0.0716 - accuracy: 0.9649 - val_loss: 0.0935 - val_accuracy: 0.9648\n",
      "Epoch 48/100\n",
      "20/20 [==============================] - 16s 809ms/step - loss: 0.1205 - accuracy: 0.9524 - val_loss: 0.0742 - val_accuracy: 0.9688\n",
      "Epoch 49/100\n",
      "20/20 [==============================] - 16s 804ms/step - loss: 0.0886 - accuracy: 0.9659 - val_loss: 0.0671 - val_accuracy: 0.9766\n",
      "Epoch 50/100\n",
      "20/20 [==============================] - 16s 799ms/step - loss: 0.0687 - accuracy: 0.9722 - val_loss: 0.0720 - val_accuracy: 0.9766\n",
      "Epoch 51/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.0812 - accuracy: 0.9696 - val_loss: 0.0681 - val_accuracy: 0.9766\n",
      "Epoch 52/100\n",
      "20/20 [==============================] - 16s 798ms/step - loss: 0.0717 - accuracy: 0.9771 - val_loss: 0.0706 - val_accuracy: 0.9805\n",
      "Epoch 53/100\n",
      "20/20 [==============================] - 16s 802ms/step - loss: 0.1286 - accuracy: 0.9584 - val_loss: 0.0643 - val_accuracy: 0.9805\n",
      "Epoch 54/100\n",
      "20/20 [==============================] - 16s 811ms/step - loss: 0.0993 - accuracy: 0.9549 - val_loss: 0.0678 - val_accuracy: 0.9766\n",
      "Epoch 55/100\n",
      "20/20 [==============================] - 16s 802ms/step - loss: 0.0901 - accuracy: 0.9603 - val_loss: 0.0763 - val_accuracy: 0.9766\n",
      "Epoch 56/100\n",
      "20/20 [==============================] - 16s 810ms/step - loss: 0.0806 - accuracy: 0.9689 - val_loss: 0.0760 - val_accuracy: 0.9727\n",
      "Epoch 57/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.0765 - accuracy: 0.9673 - val_loss: 0.1017 - val_accuracy: 0.9688\n",
      "Epoch 58/100\n",
      "20/20 [==============================] - 16s 823ms/step - loss: 0.0917 - accuracy: 0.9673 - val_loss: 0.0781 - val_accuracy: 0.9766\n",
      "Epoch 59/100\n",
      "20/20 [==============================] - 16s 806ms/step - loss: 0.0807 - accuracy: 0.9589 - val_loss: 0.1051 - val_accuracy: 0.9688\n",
      "Epoch 60/100\n",
      "20/20 [==============================] - 16s 799ms/step - loss: 0.0998 - accuracy: 0.9680 - val_loss: 0.0824 - val_accuracy: 0.9727\n",
      "Epoch 61/100\n",
      "20/20 [==============================] - 16s 808ms/step - loss: 0.0558 - accuracy: 0.9769 - val_loss: 0.0744 - val_accuracy: 0.9727\n",
      "Epoch 62/100\n",
      "20/20 [==============================] - 16s 815ms/step - loss: 0.0630 - accuracy: 0.9788 - val_loss: 0.0724 - val_accuracy: 0.9766\n",
      "Epoch 63/100\n",
      "20/20 [==============================] - 16s 806ms/step - loss: 0.0766 - accuracy: 0.9702 - val_loss: 0.0908 - val_accuracy: 0.9727\n",
      "Epoch 64/100\n",
      "20/20 [==============================] - 16s 801ms/step - loss: 0.0982 - accuracy: 0.9623 - val_loss: 0.0847 - val_accuracy: 0.9727\n",
      "Epoch 65/100\n",
      "20/20 [==============================] - 16s 814ms/step - loss: 0.0643 - accuracy: 0.9757 - val_loss: 0.0816 - val_accuracy: 0.9688\n",
      "Epoch 66/100\n",
      "20/20 [==============================] - 17s 833ms/step - loss: 0.1067 - accuracy: 0.9575 - val_loss: 0.0731 - val_accuracy: 0.9766\n",
      "Epoch 67/100\n",
      "20/20 [==============================] - 17s 895ms/step - loss: 0.0715 - accuracy: 0.9708 - val_loss: 0.0700 - val_accuracy: 0.9766\n",
      "Epoch 68/100\n",
      "20/20 [==============================] - 17s 865ms/step - loss: 0.0662 - accuracy: 0.9682 - val_loss: 0.0923 - val_accuracy: 0.9688\n",
      "Epoch 69/100\n",
      "20/20 [==============================] - 17s 825ms/step - loss: 0.0955 - accuracy: 0.9695 - val_loss: 0.0853 - val_accuracy: 0.9727\n",
      "Epoch 70/100\n",
      "20/20 [==============================] - 17s 853ms/step - loss: 0.0769 - accuracy: 0.9628 - val_loss: 0.0905 - val_accuracy: 0.9688\n",
      "Epoch 71/100\n",
      "20/20 [==============================] - 17s 822ms/step - loss: 0.0767 - accuracy: 0.9645 - val_loss: 0.1229 - val_accuracy: 0.9492\n",
      "Epoch 72/100\n",
      "20/20 [==============================] - 17s 829ms/step - loss: 0.0864 - accuracy: 0.9667 - val_loss: 0.0900 - val_accuracy: 0.9727\n",
      "Epoch 73/100\n",
      "20/20 [==============================] - 16s 819ms/step - loss: 0.0879 - accuracy: 0.9616 - val_loss: 0.1291 - val_accuracy: 0.9492\n",
      "Epoch 74/100\n",
      "20/20 [==============================] - 16s 801ms/step - loss: 0.0926 - accuracy: 0.9507 - val_loss: 0.0735 - val_accuracy: 0.9766\n",
      "Epoch 75/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.1302 - accuracy: 0.9728 - val_loss: 0.0684 - val_accuracy: 0.9766\n",
      "Epoch 76/100\n",
      "20/20 [==============================] - 16s 833ms/step - loss: 0.0569 - accuracy: 0.9784 - val_loss: 0.0780 - val_accuracy: 0.9727\n",
      "Epoch 77/100\n",
      "20/20 [==============================] - 16s 806ms/step - loss: 0.0681 - accuracy: 0.9688 - val_loss: 0.0963 - val_accuracy: 0.9648\n",
      "Epoch 78/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.0897 - accuracy: 0.9631 - val_loss: 0.0855 - val_accuracy: 0.9727\n",
      "Epoch 79/100\n",
      "20/20 [==============================] - 16s 815ms/step - loss: 0.0502 - accuracy: 0.9921 - val_loss: 0.1132 - val_accuracy: 0.9492\n",
      "Epoch 80/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.0785 - accuracy: 0.9693 - val_loss: 0.0765 - val_accuracy: 0.9688\n",
      "Epoch 81/100\n",
      "20/20 [==============================] - 16s 820ms/step - loss: 0.0848 - accuracy: 0.9688 - val_loss: 0.0755 - val_accuracy: 0.9766\n",
      "Epoch 82/100\n",
      "20/20 [==============================] - 16s 818ms/step - loss: 0.0837 - accuracy: 0.9727 - val_loss: 0.0668 - val_accuracy: 0.9766\n",
      "Epoch 83/100\n",
      "20/20 [==============================] - 16s 812ms/step - loss: 0.0888 - accuracy: 0.9659 - val_loss: 0.0846 - val_accuracy: 0.9727\n",
      "Epoch 84/100\n",
      "20/20 [==============================] - 16s 808ms/step - loss: 0.0613 - accuracy: 0.9740 - val_loss: 0.0889 - val_accuracy: 0.9688\n",
      "Epoch 85/100\n",
      "20/20 [==============================] - 16s 825ms/step - loss: 0.0954 - accuracy: 0.9587 - val_loss: 0.0896 - val_accuracy: 0.9688\n",
      "Epoch 86/100\n",
      "20/20 [==============================] - 16s 805ms/step - loss: 0.0847 - accuracy: 0.9749 - val_loss: 0.0798 - val_accuracy: 0.9727\n",
      "Epoch 87/100\n",
      "20/20 [==============================] - 16s 816ms/step - loss: 0.0854 - accuracy: 0.9711 - val_loss: 0.0924 - val_accuracy: 0.9727\n",
      "Epoch 88/100\n",
      "20/20 [==============================] - 16s 800ms/step - loss: 0.0584 - accuracy: 0.9751 - val_loss: 0.0923 - val_accuracy: 0.9688\n",
      "Epoch 89/100\n",
      "20/20 [==============================] - 16s 799ms/step - loss: 0.0616 - accuracy: 0.9731 - val_loss: 0.0748 - val_accuracy: 0.9766\n",
      "Epoch 90/100\n",
      "20/20 [==============================] - 16s 801ms/step - loss: 0.0691 - accuracy: 0.9848 - val_loss: 0.0864 - val_accuracy: 0.9766\n",
      "Epoch 91/100\n",
      "20/20 [==============================] - 16s 799ms/step - loss: 0.0571 - accuracy: 0.9757 - val_loss: 0.0755 - val_accuracy: 0.9766\n",
      "Epoch 92/100\n",
      "20/20 [==============================] - 16s 805ms/step - loss: 0.0528 - accuracy: 0.9780 - val_loss: 0.0684 - val_accuracy: 0.9766\n",
      "Epoch 93/100\n",
      "20/20 [==============================] - 16s 810ms/step - loss: 0.0929 - accuracy: 0.9688 - val_loss: 0.0702 - val_accuracy: 0.9766\n",
      "Epoch 94/100\n",
      "20/20 [==============================] - 16s 801ms/step - loss: 0.0623 - accuracy: 0.9706 - val_loss: 0.0830 - val_accuracy: 0.9688\n",
      "Epoch 95/100\n",
      "20/20 [==============================] - 16s 807ms/step - loss: 0.0730 - accuracy: 0.9712 - val_loss: 0.0775 - val_accuracy: 0.9688\n",
      "Epoch 96/100\n",
      "20/20 [==============================] - 16s 810ms/step - loss: 0.0433 - accuracy: 0.9850 - val_loss: 0.0636 - val_accuracy: 0.9766\n",
      "Epoch 97/100\n",
      "20/20 [==============================] - 16s 806ms/step - loss: 0.0599 - accuracy: 0.9756 - val_loss: 0.0700 - val_accuracy: 0.9766\n",
      "Epoch 98/100\n",
      "20/20 [==============================] - 16s 814ms/step - loss: 0.0788 - accuracy: 0.9634 - val_loss: 0.0590 - val_accuracy: 0.9766\n",
      "Epoch 99/100\n",
      "20/20 [==============================] - 16s 803ms/step - loss: 0.0709 - accuracy: 0.9670 - val_loss: 0.0698 - val_accuracy: 0.9727\n",
      "Epoch 100/100\n",
      "20/20 [==============================] - 16s 815ms/step - loss: 0.0468 - accuracy: 0.9803 - val_loss: 0.0679 - val_accuracy: 0.9766\n"
     ]
    }
   ],
   "source": [
    "# define model\n",
    "history = model.fit_generator(\n",
    "      train_generator,\n",
    "      steps_per_epoch=20,\n",
    "      epochs=100,\n",
    "      validation_data=validation_generator,\n",
    "      validation_steps=8)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0a4894fc",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "8b592169",
   "metadata": {},
   "outputs": [],
   "source": [
    "#save model\n",
    "model_json=model.to_json()\n",
    "with open(\"resnet-Adagrad_ColorAugmentation.json\", \"w\") as json_file:\n",
    "    json_file.write(model_json)\n",
    "#serializar los pesos\n",
    "model.save_weights(\"resnet-Adagrad_ColorAugmentation.h5\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "7e6bf47d",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\IDEA\\Anaconda3\\envs\\gputest\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py:1905: UserWarning: `Model.predict_generator` is deprecated and will be removed in a future version. Please use `Model.predict`, which supports generators.\n",
      "  warnings.warn('`Model.predict_generator` is deprecated and '\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "9/9 [==============================] - 4s 321ms/step\n"
     ]
    }
   ],
   "source": [
    "predictions=model.predict_generator(validation_generator, steps=len(validation_generator), verbose=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "9e33be02",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "val_preds = np.argmax(predictions, axis=1)\n",
    "val_trues = validation_generator.classes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "e5bbce44",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\IDEA\\Anaconda3\\envs\\gputest\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py:1905: UserWarning: `Model.predict_generator` is deprecated and will be removed in a future version. Please use `Model.predict`, which supports generators.\n",
      "  warnings.warn('`Model.predict_generator` is deprecated and '\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Confusion Matrix\n",
      "[[ 44   1   0]\n",
      " [  1 185   3]\n",
      " [  0   1  45]]\n"
     ]
    }
   ],
   "source": [
    "#modify:\n",
    "from sklearn.metrics import confusion_matrix\n",
    "from sklearn.metrics import classification_report\n",
    "import numpy as np\n",
    "num_of_test_samples = 280 #number of testing samples\n",
    "batch_size=32 #batch size for the validation set\n",
    "Y_pred = model.predict_generator(validation_generator, num_of_test_samples // batch_size+1)\n",
    "y_pred = np.argmax(Y_pred, axis=1)\n",
    "print('Confusion Matrix')\n",
    "print(confusion_matrix(validation_generator.classes, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "aa3967f8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Classification Report\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          cm       0.98      0.98      0.98        45\n",
      "          tm       0.99      0.98      0.98       189\n",
      "         tmp       0.94      0.98      0.96        46\n",
      "\n",
      "    accuracy                           0.98       280\n",
      "   macro avg       0.97      0.98      0.97       280\n",
      "weighted avg       0.98      0.98      0.98       280\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print('Classification Report')\n",
    "target_names = [ \"cm\",'tm', 'tmp']\n",
    "print(classification_report(validation_generator.classes, y_pred, target_names=target_names))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "a5440067",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.metrics import confusion_matrix, classification_report\n",
    "\n",
    "# Ensure the generator is reset before predictions\n",
    "validation_generator.reset()\n",
    "\n",
    "# Predict using the generator\n",
    "predictions = model.predict_generator(validation_generator, steps=len(validation_generator), verbose=1)\n",
    "\n",
    "# Convert probabilities to class predictions\n",
    "y_pred = np.argmax(predictions, axis=1)\n",
    "\n",
    "# True classes from the generator\n",
    "true_classes = validation_generator.classes\n",
    "\n",
    "# Class labels\n",
    "class_labels = list(validation_generator.class_indices.keys())\n",
    "\n",
    "# Confusion Matrix\n",
    "print(\"Confusion Matrix\")\n",
    "conf_matrix = confusion_matrix(true_classes, y_pred)\n",
    "print(conf_matrix)\n",
    "\n",
    "# Classification Report\n",
    "print(\"Classification Report\")\n",
    "report = classification_report(true_classes, y_pred, target_names=class_labels)\n",
    "print(report)\n",
    "\n",
    "# Optional: Compare accuracies\n",
    "accuracy_from_report = np.trace(conf_matrix) / np.sum(conf_matrix)\n",
    "print(f\"Accuracy from classification report: {accuracy_from_report:.4f}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "db8d3c14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "#PLOT\n",
    "acc = history.history['accuracy']\n",
    "val_acc = history.history['val_accuracy']\n",
    "loss = history.history['loss']\n",
    "val_loss = history.history['val_loss']\n",
    "\n",
    "epochs = range(len(acc))\n",
    "\n",
    "plt.plot(epochs, acc, 'bo', label='Training acc')\n",
    "plt.plot(epochs, val_acc, 'b', label='Validation acc')\n",
    "plt.title('Training and validation accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.figure()\n",
    "\n",
    "plt.plot(epochs, loss, 'bo', label='Training loss')\n",
    "plt.plot(epochs, val_loss, 'b', label='Validation loss')\n",
    "plt.title('Training and validation loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ddfd3320",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_auc_score\n",
    "from sklearn.preprocessing import label_binarize\n",
    "\n",
    "# Step 1: Binarize the true labels\n",
    "val_trues_bin = label_binarize(val_trues, classes=[0, 1, 2])  # assuming classes are 0, 1, 2\n",
    "\n",
    "# Step 2: Calculate ROC-AUC\n",
    "roc_auc = roc_auc_score(val_trues_bin, predictions, average='macro', multi_class='ovr')\n",
    "\n",
    "print(f'Multi-class ROC-AUC: {roc_auc:.4f}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "471343ea",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.metrics import roc_curve, auc\n",
    "from sklearn.preprocessing import label_binarize\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "# Step 1: Binarize the true labels\n",
    "n_classes = predictions.shape[1]  # should be 3\n",
    "val_trues_bin = label_binarize(val_trues, classes=[0, 1, 2])  # shape: (n_samples, n_classes)\n",
    "\n",
    "# Step 2: Compute FPR, TPR, and ROC AUC for each class\n",
    "fpr = dict()\n",
    "tpr = dict()\n",
    "roc_auc = dict()\n",
    "for i in range(n_classes):\n",
    "    fpr[i], tpr[i], _ = roc_curve(val_trues_bin[:, i], predictions[:, i])\n",
    "    roc_auc[i] = auc(fpr[i], tpr[i])\n",
    "\n",
    "# Step 3: Compute macro-average ROC curve\n",
    "# First aggregate all false positive rates\n",
    "all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))\n",
    "\n",
    "# Then interpolate all ROC curves at these points\n",
    "mean_tpr = np.zeros_like(all_fpr)\n",
    "for i in range(n_classes):\n",
    "    mean_tpr += np.interp(all_fpr, fpr[i], tpr[i])\n",
    "\n",
    "# Average it and compute AUC\n",
    "mean_tpr /= n_classes\n",
    "fpr[\"macro\"] = all_fpr\n",
    "tpr[\"macro\"] = mean_tpr\n",
    "roc_auc[\"macro\"] = auc(fpr[\"macro\"], tpr[\"macro\"])\n",
    "\n",
    "# Step 4: Plot\n",
    "plt.figure(figsize=(8, 6))\n",
    "colors = ['blue', 'green', 'red']\n",
    "for i in range(n_classes):\n",
    "    plt.plot(fpr[i], tpr[i], color=colors[i], lw=2,\n",
    "             label=f'Class {i} (AUC = {roc_auc[i]:.2f})')\n",
    "\n",
    "plt.plot(fpr[\"macro\"], tpr[\"macro\"], color='darkorange', linestyle='--',\n",
    "         label=f'Macro-average (AUC = {roc_auc[\"macro\"]:.2f})', lw=2)\n",
    "\n",
    "plt.plot([0, 1], [0, 1], 'k--', lw=1)\n",
    "plt.xlim([0.0, 1.0])\n",
    "plt.ylim([0.0, 1.05])\n",
    "plt.xlabel('False Positive Rate')\n",
    "plt.ylabel('True Positive Rate')\n",
    "plt.title('Multi-Class ROC Curve')\n",
    "plt.legend(loc='lower right')\n",
    "plt.grid()\n",
    "plt.tight_layout()\n",
    "\n",
    "# 💾 Save the figure before displaying\n",
    "#plt.savefig(\"roc_curve.png\", dpi=300)  # You can change the filename and format if needed\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "53b13373",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6fbcd54d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "40b275f2",
   "metadata": {},
   "outputs": [],
   "source": [
    "#STAGE 3: With cross-validation and non color-augmentation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "d7b60f65",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training Fold 1/4...\n",
      "Found 699 validated image filenames belonging to 3 classes.\n",
      "Found 234 validated image filenames belonging to 3 classes.\n",
      "Epoch 1/10\n",
      "22/22 [==============================] - 28s 1s/step - loss: 0.8279 - accuracy: 0.7725 - val_loss: 0.2695 - val_accuracy: 0.9103\n",
      "Epoch 2/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.1474 - accuracy: 0.9285 - val_loss: 0.2177 - val_accuracy: 0.9231\n",
      "Epoch 3/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0803 - accuracy: 0.9599 - val_loss: 0.0884 - val_accuracy: 0.9530\n",
      "Epoch 4/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0498 - accuracy: 0.9785 - val_loss: 0.0871 - val_accuracy: 0.9573\n",
      "Epoch 5/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0354 - accuracy: 0.9871 - val_loss: 0.0787 - val_accuracy: 0.9658\n",
      "Epoch 6/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0306 - accuracy: 0.9886 - val_loss: 0.0801 - val_accuracy: 0.9658\n",
      "Epoch 7/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0180 - accuracy: 0.9957 - val_loss: 0.0774 - val_accuracy: 0.9658\n",
      "Epoch 8/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0151 - accuracy: 0.9957 - val_loss: 0.0666 - val_accuracy: 0.9658\n",
      "Epoch 9/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0140 - accuracy: 0.9986 - val_loss: 0.0683 - val_accuracy: 0.9701\n",
      "Epoch 10/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0083 - accuracy: 0.9971 - val_loss: 0.0674 - val_accuracy: 0.9658\n",
      "Fold 1 accuracy: 0.9658\n",
      "8/8 [==============================] - 7s 723ms/step\n",
      "Classification Report for Fold 1\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          tm       0.96      0.99      0.97       158\n",
      "          cm       0.97      1.00      0.99        37\n",
      "         tmp       0.97      0.85      0.90        39\n",
      "\n",
      "    accuracy                           0.97       234\n",
      "   macro avg       0.97      0.94      0.96       234\n",
      "weighted avg       0.97      0.97      0.97       234\n",
      "\n",
      "Training Fold 2/4...\n",
      "Found 700 validated image filenames belonging to 3 classes.\n",
      "Found 233 validated image filenames belonging to 3 classes.\n",
      "Epoch 1/10\n",
      "22/22 [==============================] - 27s 1s/step - loss: 0.8212 - accuracy: 0.7386 - val_loss: 0.1675 - val_accuracy: 0.9442\n",
      "Epoch 2/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.1417 - accuracy: 0.9371 - val_loss: 0.1331 - val_accuracy: 0.9442\n",
      "Epoch 3/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0814 - accuracy: 0.9700 - val_loss: 0.0859 - val_accuracy: 0.9614\n",
      "Epoch 4/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0588 - accuracy: 0.9743 - val_loss: 0.0885 - val_accuracy: 0.9657\n",
      "Epoch 5/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0460 - accuracy: 0.9786 - val_loss: 0.0663 - val_accuracy: 0.9657\n",
      "Epoch 6/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0392 - accuracy: 0.9886 - val_loss: 0.0765 - val_accuracy: 0.9700\n",
      "Epoch 7/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0195 - accuracy: 0.9914 - val_loss: 0.0433 - val_accuracy: 0.9871\n",
      "Epoch 8/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0200 - accuracy: 0.9943 - val_loss: 0.0597 - val_accuracy: 0.9785\n",
      "Epoch 9/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0146 - accuracy: 1.0000 - val_loss: 0.0437 - val_accuracy: 0.9914\n",
      "Epoch 10/10\n",
      "22/22 [==============================] - 26s 1s/step - loss: 0.0086 - accuracy: 0.9986 - val_loss: 0.0433 - val_accuracy: 0.9785\n",
      "Fold 2 accuracy: 0.9785\n",
      "8/8 [==============================] - 7s 756ms/step\n",
      "Classification Report for Fold 2\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          tm       0.97      0.99      0.98       157\n",
      "          cm       1.00      0.95      0.97        38\n",
      "         tmp       0.97      0.95      0.96        38\n",
      "\n",
      "    accuracy                           0.98       233\n",
      "   macro avg       0.98      0.96      0.97       233\n",
      "weighted avg       0.98      0.98      0.98       233\n",
      "\n",
      "Training Fold 3/4...\n",
      "Found 700 validated image filenames belonging to 3 classes.\n",
      "Found 233 validated image filenames belonging to 3 classes.\n",
      "Epoch 1/10\n",
      "22/22 [==============================] - 28s 1s/step - loss: 1.1535 - accuracy: 0.7486 - val_loss: 0.1553 - val_accuracy: 0.9485\n",
      "Epoch 2/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.1150 - accuracy: 0.9429 - val_loss: 0.1062 - val_accuracy: 0.9614\n",
      "Epoch 3/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0467 - accuracy: 0.9800 - val_loss: 0.1315 - val_accuracy: 0.9485\n",
      "Epoch 4/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0364 - accuracy: 0.9871 - val_loss: 0.0919 - val_accuracy: 0.9742\n",
      "Epoch 5/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0327 - accuracy: 0.9857 - val_loss: 0.0766 - val_accuracy: 0.9657\n",
      "Epoch 6/10\n",
      "22/22 [==============================] - 26s 1s/step - loss: 0.0228 - accuracy: 0.9900 - val_loss: 0.0781 - val_accuracy: 0.9785\n",
      "Epoch 7/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0157 - accuracy: 0.9943 - val_loss: 0.0719 - val_accuracy: 0.9785\n",
      "Epoch 8/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0156 - accuracy: 0.9943 - val_loss: 0.0624 - val_accuracy: 0.9742\n",
      "Epoch 9/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0110 - accuracy: 0.9986 - val_loss: 0.0654 - val_accuracy: 0.9700\n",
      "Epoch 10/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0104 - accuracy: 1.0000 - val_loss: 0.0731 - val_accuracy: 0.9742\n",
      "Fold 3 accuracy: 0.9742\n",
      "8/8 [==============================] - 7s 738ms/step\n",
      "Classification Report for Fold 3\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          tm       0.97      0.99      0.98       157\n",
      "          cm       0.97      1.00      0.99        38\n",
      "         tmp       0.97      0.89      0.93        38\n",
      "\n",
      "    accuracy                           0.97       233\n",
      "   macro avg       0.97      0.96      0.97       233\n",
      "weighted avg       0.97      0.97      0.97       233\n",
      "\n",
      "Training Fold 4/4...\n",
      "Found 700 validated image filenames belonging to 3 classes.\n",
      "Found 233 validated image filenames belonging to 3 classes.\n",
      "Epoch 1/10\n",
      "22/22 [==============================] - 28s 1s/step - loss: 1.2587 - accuracy: 0.7629 - val_loss: 0.1272 - val_accuracy: 0.9614\n",
      "Epoch 2/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.1307 - accuracy: 0.9329 - val_loss: 0.2249 - val_accuracy: 0.9142\n",
      "Epoch 3/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0530 - accuracy: 0.9729 - val_loss: 0.1211 - val_accuracy: 0.9614\n",
      "Epoch 4/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0442 - accuracy: 0.9800 - val_loss: 0.1077 - val_accuracy: 0.9657\n",
      "Epoch 5/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0258 - accuracy: 0.9914 - val_loss: 0.1270 - val_accuracy: 0.9614\n",
      "Epoch 6/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0248 - accuracy: 0.9914 - val_loss: 0.1073 - val_accuracy: 0.9657\n",
      "Epoch 7/10\n",
      "22/22 [==============================] - 24s 1s/step - loss: 0.0155 - accuracy: 0.9971 - val_loss: 0.1050 - val_accuracy: 0.9742\n",
      "Epoch 8/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0149 - accuracy: 0.9957 - val_loss: 0.1009 - val_accuracy: 0.9700\n",
      "Epoch 9/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0100 - accuracy: 1.0000 - val_loss: 0.0911 - val_accuracy: 0.9700\n",
      "Epoch 10/10\n",
      "22/22 [==============================] - 25s 1s/step - loss: 0.0100 - accuracy: 0.9971 - val_loss: 0.0846 - val_accuracy: 0.9742\n",
      "Fold 4 accuracy: 0.9742\n",
      "8/8 [==============================] - 7s 716ms/step\n",
      "Classification Report for Fold 4\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          tm       0.99      0.97      0.98       157\n",
      "          cm       0.93      1.00      0.96        37\n",
      "         tmp       0.97      0.95      0.96        39\n",
      "\n",
      "    accuracy                           0.97       233\n",
      "   macro avg       0.96      0.97      0.97       233\n",
      "weighted avg       0.97      0.97      0.97       233\n",
      "\n",
      "Average accuracy across 4 folds: 0.9732\n",
      "Overall Classification Report\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "          tm       0.97      0.99      0.98       629\n",
      "          cm       0.97      0.99      0.98       150\n",
      "         tmp       0.97      0.91      0.94       154\n",
      "\n",
      "    accuracy                           0.97       933\n",
      "   macro avg       0.97      0.96      0.97       933\n",
      "weighted avg       0.97      0.97      0.97       933\n",
      "\n",
      "\n",
      "Confusion Matrices for Each Fold:\n",
      "Fold 1:\n",
      "[[156   1   1]\n",
      " [  0  37   0]\n",
      " [  6   0  33]]\n",
      "Fold 2:\n",
      "[[156   0   1]\n",
      " [  2  36   0]\n",
      " [  2   0  36]]\n",
      "Fold 3:\n",
      "[[155   1   1]\n",
      " [  0  38   0]\n",
      " [  4   0  34]]\n",
      "Fold 4:\n",
      "[[153   3   1]\n",
      " [  0  37   0]\n",
      " [  2   0  37]]\n"
     ]
    }
   ],
   "source": [
    "#with confusion matrices\n",
    "\n",
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.utils import class_weight\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "from tensorflow.keras.applications.vgg16 import preprocess_input\n",
    "from tensorflow.keras.applications import VGG16\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "from sklearn.metrics import classification_report\n",
    "\n",
    "# Define paths to the directories\n",
    "original_dir2 = os.path.abspath('C:\\\\Users\\\\oscar\\\\Documents\\\\experimentos\\\\Dataset3\\\\kfold')\n",
    "train_tm_dir = os.path.join(original_dir2, 'tm')\n",
    "train_cm_dir = os.path.join(original_dir2, 'cm')\n",
    "train_tmp_dir = os.path.join(original_dir2, 'tramp')\n",
    "\n",
    "# Collect all image paths and corresponding labels\n",
    "all_image_paths = []\n",
    "all_labels = []\n",
    "\n",
    "classes = [('tm', train_tm_dir), ('cutmark', train_cm_dir), ('trampling', train_tmp_dir)]\n",
    "\n",
    "for label, (class_name, class_dir) in enumerate(classes):\n",
    "    for image_file in os.listdir(class_dir):\n",
    "        all_image_paths.append(os.path.join(class_dir, image_file))\n",
    "        all_labels.append(label)\n",
    "\n",
    "# Convert to NumPy arrays\n",
    "all_image_paths = np.array(all_image_paths)\n",
    "all_labels = np.array(all_labels)\n",
    "\n",
    "# K-Fold Cross-Validation (Stratified)\n",
    "skf = StratifiedKFold(n_splits=4, shuffle=True, random_state=42)\n",
    "\n",
    "# Data generator with preprocessing\n",
    "datagen = ImageDataGenerator(preprocessing_function=preprocess_input)\n",
    "\n",
    "\n",
    "# Define the model\n",
    "def define_model():\n",
    "    # Load ResNet50 without the top layer\n",
    "    model = ResNet50(include_top=False, input_shape=(250, 200, 3))\n",
    "    \n",
    "    # Mark the layers of ResNet50 as not trainable\n",
    "    for layer in model.layers:\n",
    "        layer.trainable = False\n",
    "    \n",
    "    # Add custom layers for classification\n",
    "    flat1 = Flatten()(model.layers[-1].output)\n",
    "    class1 = Dense(128, activation='relu', kernel_initializer='he_uniform')(flat1)\n",
    "    drop = Dropout(0.3)(class1)\n",
    "    output = Dense(3, activation='softmax')(drop)\n",
    "    \n",
    "    # Define the new model\n",
    "    model = Model(inputs=model.inputs, outputs=output)\n",
    "    \n",
    "    # Compile the model with Ada optimizer\n",
    "    opt = Adagrad(learning_rate=0.001)\n",
    "    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "    \n",
    "    return model\n",
    "\n",
    "\n",
    "# Initialize lists to store results\n",
    "fold_accuracies = []\n",
    "all_true_labels = []\n",
    "all_pred_labels = []\n",
    "all_cm = []\n",
    "\n",
    "# Loop over each fold\n",
    "for fold, (train_idx, val_idx) in enumerate(skf.split(all_image_paths, all_labels)):\n",
    "    print(f\"Training Fold {fold + 1}/4...\")\n",
    "\n",
    "    # Split data into training and validation sets\n",
    "    train_images = all_image_paths[train_idx]\n",
    "    train_labels = all_labels[train_idx]\n",
    "    val_images = all_image_paths[val_idx]\n",
    "    val_labels = all_labels[val_idx]\n",
    "\n",
    "    # Calculate class weights\n",
    "    class_weights = class_weight.compute_class_weight('balanced', classes=np.unique(all_labels), y=train_labels)\n",
    "    class_weight_dict = dict(enumerate(class_weights))\n",
    "\n",
    "    # Convert labels to strings (for compatibility with flow_from_dataframe)\n",
    "    train_labels_str = train_labels.astype(str)\n",
    "    val_labels_str = val_labels.astype(str)\n",
    "\n",
    "    # Create training generator\n",
    "    train_generator = datagen.flow_from_dataframe(\n",
    "        dataframe=pd.DataFrame({'filename': train_images, 'class': train_labels_str}),\n",
    "        x_col='filename',\n",
    "        y_col='class',\n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical'\n",
    "    )\n",
    "\n",
    "    # Create validation generator\n",
    "    validation_generator = datagen.flow_from_dataframe(\n",
    "        dataframe=pd.DataFrame({'filename': val_images, 'class': val_labels_str}),\n",
    "        x_col='filename',\n",
    "        y_col='class',\n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical',\n",
    "        shuffle=False\n",
    "    )\n",
    "\n",
    "    # Define the model for this fold\n",
    "    model = define_model()\n",
    "\n",
    "    # Calculate steps per epoch\n",
    "    steps_per_epoch = np.ceil(len(train_images) / 32)\n",
    "    validation_steps = np.ceil(len(val_images) / 32)\n",
    "\n",
    "    # Train the model\n",
    "    history = model.fit(\n",
    "        train_generator,\n",
    "        steps_per_epoch=steps_per_epoch,\n",
    "        epochs=10,\n",
    "        validation_data=validation_generator,\n",
    "        validation_steps=validation_steps,\n",
    "        class_weight=class_weight_dict,\n",
    "        verbose=1\n",
    "    )\n",
    "\n",
    "    # Evaluate the model\n",
    "    val_loss, val_accuracy = model.evaluate(validation_generator, verbose=0)\n",
    "    fold_accuracies.append(val_accuracy)\n",
    "    print(f\"Fold {fold + 1} accuracy: {val_accuracy:.4f}\")\n",
    "\n",
    "    # Get true and predicted labels\n",
    "    val_labels_true = val_labels.astype(int)\n",
    "    val_preds = model.predict(validation_generator)\n",
    "    val_labels_pred = np.argmax(val_preds, axis=1)\n",
    "\n",
    "    all_true_labels.extend(val_labels_true)\n",
    "    all_pred_labels.extend(val_labels_pred)\n",
    "    \n",
    "     # Compute confusion matrix for this fold\n",
    "    cm = confusion_matrix(val_labels_true, val_labels_pred)\n",
    "    all_cm.append(cm)  # Store the confusion matrix for this fold\n",
    "\n",
    "    # Print classification report for this fold\n",
    "    print(f\"Classification Report for Fold {fold + 1}\")\n",
    "    print(classification_report(val_labels_true, val_labels_pred, target_names=['tm', 'cm', 'tmp']))\n",
    "\n",
    "# Average performance across folds\n",
    "print(f\"Average accuracy across 4 folds: {np.mean(fold_accuracies):.4f}\")\n",
    "\n",
    "# Overall classification report across all folds\n",
    "print(\"Overall Classification Report\")\n",
    "print(classification_report(all_true_labels, all_pred_labels, target_names=['tm', 'cm', 'tmp']))\n",
    "\n",
    "# Optionally, print the confusion matrices for all folds\n",
    "print(\"\\nConfusion Matrices for Each Fold:\")\n",
    "for i, cm in enumerate(all_cm):\n",
    "    print(f\"Fold {i + 1}:\")\n",
    "    print(cm)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "bb15f3ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Overall Confusion Matrix:\n",
      "[[620   5   4]\n",
      " [  2 148   0]\n",
      " [ 14   0 140]]\n"
     ]
    }
   ],
   "source": [
    "# Compute the overall confusion matrix (combining all folds)\n",
    "overall_cm = confusion_matrix(all_true_labels, all_pred_labels)\n",
    "\n",
    "# Print the overall confusion matrix\n",
    "print(\"\\nOverall Confusion Matrix:\")\n",
    "print(overall_cm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5f77d3a8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "121c2191",
   "metadata": {},
   "outputs": [],
   "source": [
    "#with confusion matrices\n",
    "import os\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "from sklearn.utils import class_weight\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "from tensorflow.keras.applications.vgg16 import preprocess_input\n",
    "from tensorflow.keras.applications import VGG16\n",
    "from tensorflow.keras.models import Model\n",
    "from tensorflow.keras.layers import Dense, Flatten, Dropout\n",
    "from tensorflow.keras.optimizers import SGD\n",
    "from sklearn.metrics import classification_report\n",
    "\n",
    "# Define paths to the directories\n",
    "original_dir2 = os.path.abspath('C:\\\\Users\\\\oscar\\\\Documents\\\\experimentos\\\\Dataset2\\\\kfold')\n",
    "train_tm_dir = os.path.join(original_dir2, 'tm')\n",
    "train_cm_dir = os.path.join(original_dir2, 'cm')\n",
    "train_tmp_dir = os.path.join(original_dir2, 'tramp')\n",
    "\n",
    "# Collect all image paths and corresponding labels\n",
    "all_image_paths = []\n",
    "all_labels = []\n",
    "\n",
    "classes = [('tm', train_tm_dir), ('cutmark', train_cm_dir), ('trampling', train_tmp_dir)]\n",
    "\n",
    "for label, (class_name, class_dir) in enumerate(classes):\n",
    "    for image_file in os.listdir(class_dir):\n",
    "        all_image_paths.append(os.path.join(class_dir, image_file))\n",
    "        all_labels.append(label)\n",
    "\n",
    "# Convert to NumPy arrays\n",
    "all_image_paths = np.array(all_image_paths)\n",
    "all_labels = np.array(all_labels)\n",
    "\n",
    "# K-Fold Cross-Validation (Stratified)\n",
    "skf = StratifiedKFold(n_splits=4, shuffle=True, random_state=42)\n",
    "\n",
    "# Data generator with preprocessing\n",
    "datagen = ImageDataGenerator(preprocessing_function=preprocess_input)\n",
    "\n",
    "# Define the model\n",
    "def define_model():\n",
    "    # Load ResNet50 without the top layer\n",
    "    model = ResNet50(include_top=False, input_shape=(250, 200, 3))\n",
    "    \n",
    "    # Mark the layers of ResNet50 as not trainable\n",
    "    for layer in model.layers:\n",
    "        layer.trainable = False\n",
    "    \n",
    "    # Add custom layers for classification\n",
    "    flat1 = Flatten()(model.layers[-1].output)\n",
    "    class1 = Dense(128, activation='relu', kernel_initializer='he_uniform')(flat1)\n",
    "    drop = Dropout(0.3)(class1)\n",
    "    output = Dense(3, activation='softmax')(drop)\n",
    "    \n",
    "    # Define the new model\n",
    "    model = Model(inputs=model.inputs, outputs=output)\n",
    "    \n",
    "    # Compile the model with Ada optimizer\n",
    "    opt = Adagrad(learning_rate=0.001)\n",
    "    model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])\n",
    "    \n",
    "    return model\n",
    "\n",
    "\n",
    "# Initialize lists to store results\n",
    "fold_accuracies = []\n",
    "all_true_labels = []\n",
    "all_pred_labels = []\n",
    "all_cm = []\n",
    "\n",
    "# Loop over each fold\n",
    "for fold, (train_idx, val_idx) in enumerate(skf.split(all_image_paths, all_labels)):\n",
    "    print(f\"Training Fold {fold + 1}/4...\")\n",
    "\n",
    "    # Split data into training and validation sets\n",
    "    train_images = all_image_paths[train_idx]\n",
    "    train_labels = all_labels[train_idx]\n",
    "    val_images = all_image_paths[val_idx]\n",
    "    val_labels = all_labels[val_idx]\n",
    "\n",
    "    # Calculate class weights\n",
    "    class_weights = class_weight.compute_class_weight('balanced', classes=np.unique(all_labels), y=train_labels)\n",
    "    class_weight_dict = dict(enumerate(class_weights))\n",
    "\n",
    "    # Convert labels to strings (for compatibility with flow_from_dataframe)\n",
    "    train_labels_str = train_labels.astype(str)\n",
    "    val_labels_str = val_labels.astype(str)\n",
    "\n",
    "    # Create training generator\n",
    "    train_generator = datagen.flow_from_dataframe(\n",
    "        dataframe=pd.DataFrame({'filename': train_images, 'class': train_labels_str}),\n",
    "        x_col='filename',\n",
    "        y_col='class',\n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical'\n",
    "    )\n",
    "\n",
    "    # Create validation generator\n",
    "    validation_generator = datagen.flow_from_dataframe(\n",
    "        dataframe=pd.DataFrame({'filename': val_images, 'class': val_labels_str}),\n",
    "        x_col='filename',\n",
    "        y_col='class',\n",
    "        target_size=(250, 200),\n",
    "        batch_size=32,\n",
    "        class_mode='categorical',\n",
    "        shuffle=False\n",
    "    )\n",
    "\n",
    "    # Define the model for this fold\n",
    "    model = define_model()\n",
    "\n",
    "    # Calculate steps per epoch\n",
    "    steps_per_epoch = np.ceil(len(train_images) / 32)\n",
    "    validation_steps = np.ceil(len(val_images) / 32)\n",
    "\n",
    "    # Train the model\n",
    "    history = model.fit(\n",
    "        train_generator,\n",
    "        steps_per_epoch=steps_per_epoch,\n",
    "        epochs=10,\n",
    "        validation_data=validation_generator,\n",
    "        validation_steps=validation_steps,\n",
    "        class_weight=class_weight_dict,\n",
    "        verbose=1\n",
    "    )\n",
    "\n",
    "    # Evaluate the model\n",
    "    val_loss, val_accuracy = model.evaluate(validation_generator, verbose=0)\n",
    "    fold_accuracies.append(val_accuracy)\n",
    "    print(f\"Fold {fold + 1} accuracy: {val_accuracy:.4f}\")\n",
    "\n",
    "    # Get true and predicted labels\n",
    "    val_labels_true = val_labels.astype(int)\n",
    "    val_preds = model.predict(validation_generator)\n",
    "    val_labels_pred = np.argmax(val_preds, axis=1)\n",
    "\n",
    "    all_true_labels.extend(val_labels_true)\n",
    "    all_pred_labels.extend(val_labels_pred)\n",
    "    \n",
    "     # Compute confusion matrix for this fold\n",
    "    cm = confusion_matrix(val_labels_true, val_labels_pred)\n",
    "    all_cm.append(cm)  # Store the confusion matrix for this fold\n",
    "\n",
    "    # Print classification report for this fold\n",
    "    print(f\"Classification Report for Fold {fold + 1}\")\n",
    "    print(classification_report(val_labels_true, val_labels_pred, target_names=['tm', 'cm', 'tmp']))\n",
    "\n",
    "# Average performance across folds\n",
    "print(f\"Average accuracy across 4 folds: {np.mean(fold_accuracies):.4f}\")\n",
    "\n",
    "# Overall classification report across all folds\n",
    "print(\"Overall Classification Report\")\n",
    "print(classification_report(all_true_labels, all_pred_labels, target_names=['tm', 'cm', 'tmp']))\n",
    "\n",
    "# Optionally, print the confusion matrices for all folds\n",
    "print(\"\\nConfusion Matrices for Each Fold:\")\n",
    "for i, cm in enumerate(all_cm):\n",
    "    print(f\"Fold {i + 1}:\")\n",
    "    print(cm)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "68193163",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f11a3658",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1536eb31",
   "metadata": {},
   "outputs": [],
   "source": [
    "#STAGE 4: FSSL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "a6096a2c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.0.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.1.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.10.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.100.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.101.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.102.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.103.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.104.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.105.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.106.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.107.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.108.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.109.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.11.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.110.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.111.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.112.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.113.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.114.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.115.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.116.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.117.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.118.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.119.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.12.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.120.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.121.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.122.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.123.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.124.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.125.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.126.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.127.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.128.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.129.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.13.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.130.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.131.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.132.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.133.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.134.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.135.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.136.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.137.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.138.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.139.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.14.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.140.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.141.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.142.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.143.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.144.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.145.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.146.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.147.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.148.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.149.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.15.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.150.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.151.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.152.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.153.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.154.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.155.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.156.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.157.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.158.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.159.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.16.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.160.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.161.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.162.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.163.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.164.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.165.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.166.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.167.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.168.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.169.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.17.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.170.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.171.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.172.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.173.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.174.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.175.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.176.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.177.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.178.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.179.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.18.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.180.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.181.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.182.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.183.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.184.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.185.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.186.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.187.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.188.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.189.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.19.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.190.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.191.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.192.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.193.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.194.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.195.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.196.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.197.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.198.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.199.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.2.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.20.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.200.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.201.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.202.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.203.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.204.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.205.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.206.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.207.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.208.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.209.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.21.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.210.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.211.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.212.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.213.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.214.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.215.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.216.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.217.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.218.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.219.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.22.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.220.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.221.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.222.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.223.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.224.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.225.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.226.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.227.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.228.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.229.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.23.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.230.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.231.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.232.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.233.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.234.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.235.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.236.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.237.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.238.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.239.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.24.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.240.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.241.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.242.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.243.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.244.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.245.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.246.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.247.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.248.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.249.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.25.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.250.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.251.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.252.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.253.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.254.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.255.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.256.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.257.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.258.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.259.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.26.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.260.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.261.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.262.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.263.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.264.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.265.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.266.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.267.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.268.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.269.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.27.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.270.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.271.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.272.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.273.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.274.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.275.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.276.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.277.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.278.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.279.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.28.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.280.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.281.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.282.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.283.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.284.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.285.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.286.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.287.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.288.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.289.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.29.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.290.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.291.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.292.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.293.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.294.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.295.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.296.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.297.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.298.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.299.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.3.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.30.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.300.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.301.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.302.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.303.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.304.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.305.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.306.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.307.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.308.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.309.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.31.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.310.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.311.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.312.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.313.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.314.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.315.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.316.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.317.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.318.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.319.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.32.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.320.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.321.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.322.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.323.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.324.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.325.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.326.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.327.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.328.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.329.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.33.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.330.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.331.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.332.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.333.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.334.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.335.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.336.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.337.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.338.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.339.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.34.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.340.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.341.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.342.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.343.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.344.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.345.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.346.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.347.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.348.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.349.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.35.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.350.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.351.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.352.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.353.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.354.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.355.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.356.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.357.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.358.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.359.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.36.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.360.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.361.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.362.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.363.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.364.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.365.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.366.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.367.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.368.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.369.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.37.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.370.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.371.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.372.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.373.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.374.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.375.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.376.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.377.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.378.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.379.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.38.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.380.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.381.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.382.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.383.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.384.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.385.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.386.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.387.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.388.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.389.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.39.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.390.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.391.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.392.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.393.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.394.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.395.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.396.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.397.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.398.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.399.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.4.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.40.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.400.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.401.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.402.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.403.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.404.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.405.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.406.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.407.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.408.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.409.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.41.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.410.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.411.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.412.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.413.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.414.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.415.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.416.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.417.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.418.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.419.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.42.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.420.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.421.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.422.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.423.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.424.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.425.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.426.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.427.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.428.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.429.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.43.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.430.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.431.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.432.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.433.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.434.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.435.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.436.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.437.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.438.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.439.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.44.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.440.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.441.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.442.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.443.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.444.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.445.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.446.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.447.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.448.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.449.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.45.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.450.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.451.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.452.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.453.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.454.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.455.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.456.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.457.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.458.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.459.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.46.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.460.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.461.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.462.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.463.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.464.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.465.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.466.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.467.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.468.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.469.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.47.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.470.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.471.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.472.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.473.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.474.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.475.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.476.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.477.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.478.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.479.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.48.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.480.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.481.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.482.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.483.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.484.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.485.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.486.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.487.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.488.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.489.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.49.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.490.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.491.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.492.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.493.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.494.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.495.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.496.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.497.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.498.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.499.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.5.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.50.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.500.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.501.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.502.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.503.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.504.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.505.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.506.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.507.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.508.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.509.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.51.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.510.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.511.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.512.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.513.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.514.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.515.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.516.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.517.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.518.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.519.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.52.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.520.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.521.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.522.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.523.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.524.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.525.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.526.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.527.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.528.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.529.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.53.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.530.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.531.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.532.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.533.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.534.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.535.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.536.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.537.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.538.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.539.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.54.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.540.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.541.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.542.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.543.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.544.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.545.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.546.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.547.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.548.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.549.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.55.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.550.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.551.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.552.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.553.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.554.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.555.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.556.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.557.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.558.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.559.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.56.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.560.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.561.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.562.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.563.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.564.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.565.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.566.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.567.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.568.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.569.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.57.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.570.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.571.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.572.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.573.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.574.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.575.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.576.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.577.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.578.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.579.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.58.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.580.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.581.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.582.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.583.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.584.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.585.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.586.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.587.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.588.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.589.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.59.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.590.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.591.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.592.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.593.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.594.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.595.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.596.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.597.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.598.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.599.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.6.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.60.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.600.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.601.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.602.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.603.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.604.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.605.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.606.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.607.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.608.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.609.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.61.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.610.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.611.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.612.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.613.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.614.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.615.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.616.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.617.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.618.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.619.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.62.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.620.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.621.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.622.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.623.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.624.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.625.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.626.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.627.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.628.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.63.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.64.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.65.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.66.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.67.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.68.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.69.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.7.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.70.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.71.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.72.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.73.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.74.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.75.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.76.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.77.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.78.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.79.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.8.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.80.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.81.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.82.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.83.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.84.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.85.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.86.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.87.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.88.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.89.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.9.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.90.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.91.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.92.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.93.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.94.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.95.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.96.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.97.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.98.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tm\\tm.99.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.0.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.1.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.10.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.100.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.101.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.102.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.103.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.104.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.105.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.106.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.107.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.108.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.109.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.11.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.110.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.111.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.112.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.113.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.114.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.115.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.116.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.117.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.118.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.119.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.12.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.120.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.121.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.122.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.123.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.124.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.125.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.126.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.127.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.128.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.129.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.13.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.130.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.131.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.132.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.133.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.134.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.135.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.136.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.137.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.138.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.139.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.14.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.140.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.141.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.142.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.143.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.144.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.145.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.146.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.147.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.148.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.149.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.15.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.16.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.17.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.18.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.19.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.2.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.20.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.21.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.22.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.23.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.24.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.25.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.26.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.27.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.28.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.29.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.3.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.30.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.31.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.32.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.33.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.34.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.35.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.36.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.37.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.38.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.39.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.4.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.40.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.41.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.42.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.43.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.44.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.45.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.46.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.47.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.48.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.49.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.5.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.50.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.51.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.52.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.53.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.54.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.55.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.56.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.57.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.58.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.59.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.6.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.60.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.61.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.62.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.63.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.64.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.65.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.66.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.67.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.68.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.69.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.7.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.70.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.71.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.72.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.73.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.74.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.75.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.76.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.77.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.78.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.79.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.8.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.80.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.81.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.82.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.83.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.84.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.85.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.86.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.87.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.88.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.89.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.9.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.90.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.91.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.92.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.93.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.94.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.95.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.96.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.97.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.98.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\cm\\cutmark.99.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.0.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.1.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.10.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.100.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.101.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.102.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.103.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.104.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.105.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.106.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.107.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.108.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.109.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.11.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.110.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.111.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.112.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.113.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.114.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.115.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.116.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.117.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.118.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.119.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.12.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.120.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.121.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.122.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.123.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.124.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.125.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.126.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.127.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.128.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.129.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.13.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.130.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.131.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.132.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.133.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.134.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.135.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.136.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.137.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.138.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.139.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.14.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.140.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.141.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.142.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.143.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.144.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.145.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.146.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.147.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.148.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.149.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.15.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.150.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.151.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.152.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.153.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.16.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.17.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.18.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.19.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.2.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.20.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.21.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.22.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.23.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.24.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.25.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.26.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.27.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.28.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.29.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.3.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.30.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.31.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.32.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.33.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.34.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.35.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.36.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.37.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.38.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.39.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.4.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.40.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.41.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.42.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.43.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.44.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.45.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.46.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.47.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.48.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.49.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.5.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.50.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.51.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.52.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.53.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.54.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.55.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.56.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.57.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.58.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.59.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.6.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.60.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.61.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.62.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.63.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.64.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.65.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.66.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.67.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.68.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.69.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.7.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.70.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.71.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.72.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.73.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.74.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.75.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.76.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.77.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.78.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.79.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.8.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.80.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.81.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.82.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.83.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.84.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.85.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.86.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.87.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.88.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.89.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.9.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.90.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.91.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.92.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.93.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.94.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.95.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.96.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.97.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.98.bmp\n",
      "Loading, resizing, and preprocessing image: C:\\Users\\oscar\\Documents\\experimentos\\Dataset3\\kfold\\tramp\\trampling.99.bmp\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow.keras import layers, models, optimizers\n",
    "from tensorflow.keras.applications import VGG16\n",
    "from tensorflow.keras.applications import resnet50\n",
    "from sklearn.model_selection import train_test_split\n",
    "import numpy as np\n",
    "import os\n",
    "from glob import glob\n",
    "from tensorflow.keras.applications.vgg16 import preprocess_input \n",
    "from tensorflow.keras.preprocessing.image import load_img, img_to_array\n",
    "\n",
    "# Set your directory containing the images\n",
    "data_directory = 'C:\\\\Users\\\\oscar\\\\Documents\\\\experimentos\\\\Dataset3\\\\kfold'\n",
    "\n",
    "# Function to load and resize images from a directory\n",
    "\n",
    "def load_images(directory, target_size=(250, 200)):\n",
    "    image_list = []\n",
    "    file_pattern = os.path.join(directory, '*.bmp')  # Modify as needed for other file types\n",
    "    for filename in glob(file_pattern):\n",
    "        print(f\"Loading, resizing, and preprocessing image: {filename}\")\n",
    "        img = load_img(filename, target_size=target_size)\n",
    "        img_array = img_to_array(img)\n",
    "        img_array = preprocess_input(img_array)  # Apply TL model preprocessing\n",
    "        image_list.append(img_array)\n",
    "    return np.array(image_list)\n",
    "\n",
    "\n",
    "# Load images for each class\n",
    "class1_images = load_images(os.path.join(data_directory, 'tm'))\n",
    "class2_images = load_images(os.path.join(data_directory, 'cm'))\n",
    "class3_images = load_images(os.path.join(data_directory, 'tramp'))\n",
    "\n",
    "# Create labels for each class\n",
    "class1_labels = np.zeros(len(class1_images))\n",
    "class2_labels = np.ones(len(class2_images))\n",
    "class3_labels = 2 * np.ones(len(class3_images))\n",
    "\n",
    "# Concatenate images and labels for all classes\n",
    "all_images = np.concatenate([class1_images, class2_images,class3_images])\n",
    "all_labels = np.concatenate([class1_labels, class2_labels, class3_labels])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "4d45818c",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "# Split the data into training (70%) and the rest (30%)\n",
    "train_images, temp_images, train_labels, temp_labels = train_test_split(\n",
    "    all_images, all_labels, test_size=0.3, random_state=42\n",
    ")\n",
    "\n",
    "# Split the remaining 30% into validation (15%) and testing (15%)\n",
    "val_images, test_images, val_labels, test_labels = train_test_split(\n",
    "    temp_images, temp_labels, test_size=0.5, random_state=42\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "24905f89",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of training images: 653\n",
      "Number of validation images: 140\n",
      "Number of testing images: 140\n"
     ]
    }
   ],
   "source": [
    "num_training_images = len(train_images)\n",
    "print(f'Number of training images: {num_training_images}')\n",
    "\n",
    "num_validation_images = len(val_images)\n",
    "print(f'Number of validation images: {num_validation_images}')\n",
    "\n",
    "num_testing_images = len(test_images)\n",
    "print(f'Number of testing images: {num_testing_images}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "b4394bab",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Load the pre-trained ResNet50 model without the top classification layers\n",
    "base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_shape=(250, 200, 3))\n",
    "\n",
    "# Freeze the convolutional layers of the ResNet50 base model\n",
    "for layer in base_model.layers:\n",
    "    layer.trainable = False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2960e9ea",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "5e353838",
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.keras.callbacks import EarlyStopping, LearningRateScheduler\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "import tensorflow as tf\n",
    "import numpy as np\n",
    "import random\n",
    "\n",
    "# Set random seed for TensorFlow\n",
    "tf.random.set_seed(42)\n",
    "\n",
    "# Set random seed for numpy\n",
    "np.random.seed(42)\n",
    "\n",
    "# Set random seed for Python random module\n",
    "random.seed(42)\n",
    "\n",
    "def create_maml_model(base_model, num_classes):\n",
    "    maml_model = models.Sequential([\n",
    "        base_model,\n",
    "        layers.Conv2D(512, (3, 3), activation='relu', padding='same'),  # Changed to 'same' padding\n",
    "        layers.GlobalAveragePooling2D(),\n",
    "        layers.Dense(512, activation='relu'),\n",
    "        layers.Dropout(0.5),\n",
    "        layers.BatchNormalization(),\n",
    "        layers.Dense(num_classes, activation='softmax')\n",
    "    ])\n",
    "    return maml_model\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "6a998f28",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/100 - Train Loss: 0.1682, Train Accuracy: 93.42%\n",
      "Epoch 1/100 - Validation Loss: 0.1123, Validation Accuracy: 95.71%\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\oscar\\anaconda3\\Lib\\site-packages\\keras\\src\\engine\\training.py:3079: UserWarning: You are saving your model as an HDF5 file via `model.save()`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')`.\n",
      "  saving_api.save_model(\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Learning Rate: 0.001\n",
      "Epoch 2/100 - Train Loss: 0.1391, Train Accuracy: 96.32%\n",
      "Epoch 2/100 - Validation Loss: 0.1289, Validation Accuracy: 95.00%\n",
      "Learning Rate: 0.001\n",
      "Epoch 3/100 - Train Loss: 0.1255, Train Accuracy: 94.64%\n",
      "Epoch 3/100 - Validation Loss: 0.0840, Validation Accuracy: 95.71%\n",
      "Learning Rate: 0.001\n",
      "Epoch 4/100 - Train Loss: 0.0858, Train Accuracy: 97.09%\n",
      "Epoch 4/100 - Validation Loss: 0.0768, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.001\n",
      "Epoch 5/100 - Train Loss: 0.0973, Train Accuracy: 97.40%\n",
      "Epoch 5/100 - Validation Loss: 0.1098, Validation Accuracy: 94.29%\n",
      "Learning Rate: 0.001\n",
      "Epoch 6/100 - Train Loss: 0.0472, Train Accuracy: 97.86%\n",
      "Epoch 6/100 - Validation Loss: 0.0803, Validation Accuracy: 97.86%\n",
      "Learning Rate: 0.001\n",
      "Epoch 7/100 - Train Loss: 0.0753, Train Accuracy: 97.40%\n",
      "Epoch 7/100 - Validation Loss: 0.1292, Validation Accuracy: 95.71%\n",
      "Learning Rate: 0.001\n",
      "Epoch 8/100 - Train Loss: 0.0585, Train Accuracy: 98.01%\n",
      "Epoch 8/100 - Validation Loss: 0.0949, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.001\n",
      "Epoch 9/100 - Train Loss: 0.0668, Train Accuracy: 97.55%\n",
      "Epoch 9/100 - Validation Loss: 0.1396, Validation Accuracy: 96.43%\n",
      "Learning Rate: 0.001\n",
      "Epoch 10/100 - Train Loss: 0.2425, Train Accuracy: 94.33%\n",
      "Epoch 10/100 - Validation Loss: 0.3658, Validation Accuracy: 92.14%\n",
      "Learning Rate: 0.001\n",
      "Epoch 11/100 - Train Loss: 0.2580, Train Accuracy: 94.18%\n",
      "Epoch 11/100 - Validation Loss: 0.4491, Validation Accuracy: 91.43%\n",
      "Learning Rate: 0.001\n",
      "Epoch 12/100 - Train Loss: 0.0737, Train Accuracy: 97.55%\n",
      "Epoch 12/100 - Validation Loss: 0.1459, Validation Accuracy: 95.00%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 13/100 - Train Loss: 0.0159, Train Accuracy: 99.85%\n",
      "Epoch 13/100 - Validation Loss: 0.1040, Validation Accuracy: 96.43%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 14/100 - Train Loss: 0.0116, Train Accuracy: 100.00%\n",
      "Epoch 14/100 - Validation Loss: 0.0758, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 15/100 - Train Loss: 0.0107, Train Accuracy: 100.00%\n",
      "Epoch 15/100 - Validation Loss: 0.0652, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 16/100 - Train Loss: 0.0099, Train Accuracy: 99.69%\n",
      "Epoch 16/100 - Validation Loss: 0.0698, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 17/100 - Train Loss: 0.0095, Train Accuracy: 99.54%\n",
      "Epoch 17/100 - Validation Loss: 0.0688, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 18/100 - Train Loss: 0.0077, Train Accuracy: 100.00%\n",
      "Epoch 18/100 - Validation Loss: 0.0689, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 19/100 - Train Loss: 0.0087, Train Accuracy: 99.54%\n",
      "Epoch 19/100 - Validation Loss: 0.0644, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 20/100 - Train Loss: 0.0053, Train Accuracy: 100.00%\n",
      "Epoch 20/100 - Validation Loss: 0.0726, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 21/100 - Train Loss: 0.0125, Train Accuracy: 99.54%\n",
      "Epoch 21/100 - Validation Loss: 0.0685, Validation Accuracy: 97.14%\n",
      "Learning Rate: 0.0001\n",
      "Epoch 22/100 - Train Loss: 0.0057, Train Accuracy: 100.00%\n",
      "Epoch 22/100 - Validation Loss: 0.0643, Validation Accuracy: 97.86%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 23/100 - Train Loss: 0.0046, Train Accuracy: 100.00%\n",
      "Epoch 23/100 - Validation Loss: 0.0661, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 24/100 - Train Loss: 0.0046, Train Accuracy: 100.00%\n",
      "Epoch 24/100 - Validation Loss: 0.0661, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 25/100 - Train Loss: 0.0047, Train Accuracy: 100.00%\n",
      "Epoch 25/100 - Validation Loss: 0.0662, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 26/100 - Train Loss: 0.0038, Train Accuracy: 100.00%\n",
      "Epoch 26/100 - Validation Loss: 0.0712, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 27/100 - Train Loss: 0.0037, Train Accuracy: 100.00%\n",
      "Epoch 27/100 - Validation Loss: 0.0724, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 28/100 - Train Loss: 0.0037, Train Accuracy: 100.00%\n",
      "Epoch 28/100 - Validation Loss: 0.0741, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 29/100 - Train Loss: 0.0038, Train Accuracy: 100.00%\n",
      "Epoch 29/100 - Validation Loss: 0.0743, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 30/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 30/100 - Validation Loss: 0.0717, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 31/100 - Train Loss: 0.0040, Train Accuracy: 100.00%\n",
      "Epoch 31/100 - Validation Loss: 0.0709, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1e-05\n",
      "Epoch 32/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 32/100 - Validation Loss: 0.0696, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1.0000000000000002e-06\n",
      "Epoch 33/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 33/100 - Validation Loss: 0.0696, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1.0000000000000002e-06\n",
      "Epoch 34/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 34/100 - Validation Loss: 0.0696, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1.0000000000000002e-06\n",
      "Epoch 35/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 35/100 - Validation Loss: 0.0698, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1.0000000000000002e-06\n",
      "Epoch 36/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 36/100 - Validation Loss: 0.0698, Validation Accuracy: 97.14%\n",
      "Learning Rate: 1.0000000000000002e-06\n",
      "Epoch 37/100 - Train Loss: 0.0041, Train Accuracy: 100.00%\n",
      "Epoch 37/100 - Validation Loss: 0.0699, Validation Accuracy: 97.14%\n",
      "Early stopping at epoch 37\n",
      "Final Testing Loss: 0.0492, Testing Accuracy: 99.29%\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# Set up MAML model\n",
    "num_classes = 3  # Number of output classes\n",
    "maml_model = create_maml_model(base_model, num_classes)\n",
    "\n",
    "# Set up MAML optimizer\n",
    "meta_optimizer = optimizers.Adam(learning_rate=1e-3)\n",
    "#meta_optimizer = optimizers.Adagrad(learning_rate=0.001)\n",
    "#meta_optimizer = optimizers.SGD(learning_rate=0.001, momentum=0.9)\n",
    "\n",
    "# Compile the MAML model\n",
    "maml_model.compile(optimizer=meta_optimizer, loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
    "\n",
    "\n",
    "# Lists to store training, validation, and testing history\n",
    "train_loss_history = []\n",
    "train_acc_history = []\n",
    "val_loss_history = []\n",
    "val_acc_history = []\n",
    "test_loss_history = []\n",
    "test_acc_history = []\n",
    "\n",
    "# Training loop for few-shot learning\n",
    "num_epochs = 100  # Increase the number of epochs\n",
    "num_tasks = 40  # Number of few-shot tasks\n",
    "validation_interval = 1  # Evaluate on the validation set every 'validation_interval' epochs\n",
    "num_shots = 5  # Number of examples per class in each few-shot task\n",
    "\n",
    "# Early stopping parameters\n",
    "patience = 15\n",
    "best_val_loss = float('inf')\n",
    "wait = 0\n",
    "\n",
    "# Data Augmentation\n",
    "datagen = ImageDataGenerator(\n",
    "    rotation_range=20,\n",
    "    width_shift_range=0.2,\n",
    "    height_shift_range=0.2,\n",
    "    horizontal_flip=True\n",
    ")\n",
    "\n",
    "# Callbacks\n",
    "early_stopping = tf.keras.callbacks.EarlyStopping(\n",
    "    monitor='val_loss',\n",
    "    patience=patience,\n",
    "    restore_best_weights=True\n",
    ")\n",
    "# Define the directory where you want to save the best model\n",
    "save_dir = 'C:\\\\Users\\\\oscar\\\\Documents\\\\experimentos\\\\Dataset3\\\\kfold'\n",
    "\n",
    "# Callback to save the best model\n",
    "model_checkpoint = tf.keras.callbacks.ModelCheckpoint(\n",
    "    os.path.join(save_dir, 'best_Resn_model5_15.keras'),  # Full path to save the best model\n",
    "    monitor='val_loss',\n",
    "    save_best_only=True\n",
    ")\n",
    "\n",
    "\n",
    "# Learning rate scheduler function\n",
    "def lr_schedule(epoch):\n",
    "    lr = 1e-3\n",
    "    if epoch > 10:\n",
    "        lr *= 0.1\n",
    "    if epoch > 20:\n",
    "        lr *= 0.1\n",
    "    if epoch > 30:\n",
    "        lr *= 0.1\n",
    "    return lr\n",
    "\n",
    "# Training loop\n",
    "for epoch in range(num_epochs):\n",
    "    for task in range(num_tasks):\n",
    "        task_samples = []\n",
    "        task_labels = []\n",
    "        for class_idx in range(num_classes):\n",
    "            class_indices = np.where(train_labels == class_idx)[0]\n",
    "            selected_indices = np.random.choice(class_indices, num_shots, replace=False)\n",
    "            selected_samples = train_images[selected_indices]\n",
    "            task_samples.extend(selected_samples)\n",
    "            task_labels.extend([class_idx] * num_shots)\n",
    "\n",
    "        task_samples = np.array(task_samples)\n",
    "        task_labels = np.array(task_labels)\n",
    "\n",
    "        # Fine-tune the model on the few-shot task with data augmentation\n",
    "        with tf.GradientTape() as tape:\n",
    "            augmented_task_samples = []\n",
    "            for sample in task_samples:\n",
    "                augmented_sample = datagen.random_transform(sample)\n",
    "                augmented_task_samples.append(augmented_sample)\n",
    "            augmented_task_samples = np.array(augmented_task_samples)\n",
    "\n",
    "            logits = maml_model(augmented_task_samples)\n",
    "            loss = tf.losses.sparse_categorical_crossentropy(task_labels, logits)\n",
    "\n",
    "        gradients = tape.gradient(loss, maml_model.trainable_variables)\n",
    "        meta_optimizer.apply_gradients(zip(gradients, maml_model.trainable_variables))\n",
    "\n",
    "    train_loss, train_acc = maml_model.evaluate(train_images, train_labels, verbose=0)\n",
    "    print(f'Epoch {epoch + 1}/{num_epochs} - Train Loss: {train_loss:.4f}, Train Accuracy: {train_acc * 100:.2f}%')\n",
    "\n",
    "    train_loss_history.append(train_loss)\n",
    "    train_acc_history.append(train_acc)\n",
    "\n",
    "    if epoch % validation_interval == 0:\n",
    "        val_loss, val_acc = maml_model.evaluate(val_images, val_labels, verbose=0)\n",
    "        print(f'Epoch {epoch + 1}/{num_epochs} - Validation Loss: {val_loss:.4f}, Validation Accuracy: {val_acc * 100:.2f}%')\n",
    "        \n",
    "        val_loss_history.append(val_loss)\n",
    "        val_acc_history.append(val_acc)\n",
    "\n",
    "        if val_loss < best_val_loss:\n",
    "            best_val_loss = val_loss\n",
    "            wait = 0\n",
    "            # Save the best model\n",
    "            maml_model.save(os.path.join(save_dir, 'best_model.h5'))#change model name\n",
    "        else:\n",
    "            wait += 1\n",
    "            if wait >= patience:\n",
    "                print(f'Early stopping at epoch {epoch + 1}')\n",
    "                break\n",
    "\n",
    "        # Apply learning rate scheduler\n",
    "    lr = lr_schedule(epoch)\n",
    "    tf.keras.backend.set_value(meta_optimizer.lr, lr)\n",
    "    print(f'Learning Rate: {lr}')\n",
    "\n",
    "# After training, you can use the test set for the final evaluation\n",
    "test_loss, test_acc = maml_model.evaluate(test_images, test_labels, verbose=0)\n",
    "print(f'Final Testing Loss: {test_loss:.4f}, Testing Accuracy: {test_acc * 100:.2f}%')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "d3c53c27",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAGGCAYAAACqvTJ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAADm4UlEQVR4nOzdd3gUZdfH8e9m03toIUBIQgfpRaSJCIJgx4IVUbCBBcv7KAoiilgesQtWwA728ogIKigK0osKUqQESAKEkN6z8/4x2U1CerLJJuH3ua5cs5mduefeEGU4c865LYZhGIiIiIiIiIiIiNQiN1dPQERERERERERETj8KSomIiIiIiIiISK1TUEpERERERERERGqdglIiIiIiIiIiIlLrFJQSEREREREREZFap6CUiIiIiIiIiIjUOgWlRERERERERESk1ikoJSIiIiIiIiIitU5BKRERERERERERqXUKSolUgcViqdDXqlWrqnWdxx57DIvFUqVzV61a5ZQ51HUTJkwgMjKy1PePHz+Op6cnV199danHJCcn4+vry8UXX1zh6y5atAiLxcKBAwcqPJfCLBYLjz32WIWvZxcTE8Njjz3G1q1bi71Xnd+X6oqMjOTCCy90ybVFRKT26B6o7tA9UAFX3gPZ5eTk0Lx5cywWC5999plL5yJSn7i7egIi9dHatWuLfP/EE0+wcuVKfv755yL7u3TpUq3rTJo0ifPPP79K5/bu3Zu1a9dWew71XdOmTbn44ov56quvOHnyJCEhIcWOWbx4MRkZGUycOLFa15oxYwb33HNPtcYoT0xMDLNmzSIyMpKePXsWea86vy8iIiIVoXug+kP3QLXrf//7H0ePHgXgnXfe4YorrnDpfETqCwWlRKrgrLPOKvJ906ZNcXNzK7b/VOnp6fj6+lb4Oq1ataJVq1ZVmmNgYGC58zldTJw4kc8//5wPP/yQO++8s9j7CxYsIDQ0lAsuuKBa12nbtm21zq+u6vy+iIiIVITugeoX3QPVnnfeeQdPT0+GDh3K8uXLOXz4sMvnVJK8vDxyc3Px8vJy9VREAJXvidSYc845h65du/Lrr78ycOBAfH19ufnmmwFYsmQJI0eOJCwsDB8fHzp37sxDDz1EWlpakTFKSkW2l0ktW7aM3r174+PjQ6dOnViwYEGR40pKXZ8wYQL+/v7s3buXMWPG4O/vT3h4OPfffz9ZWVlFzj98+DBXXHEFAQEBBAcHc91117FhwwYsFguLFi0q87MfP36cyZMn06VLF/z9/WnWrBnnnnsuq1evLnLcgQMHsFgsPPfcczz//PNERUXh7+/PgAED+OOPP4qNu2jRIjp27IiXlxedO3fmvffeK3MedqNGjaJVq1YsXLiw2Hs7d+5k3bp1jB8/Hnd3d1asWMEll1xCq1at8Pb2pl27dtx2223Ex8eXe52SUteTk5O55ZZbaNy4Mf7+/px//vns3r272Ll79+7lpptuon379vj6+tKyZUsuuugi/vzzT8cxq1atol+/fgDcdNNNjhIJewp8Sb8vNpuNZ599lk6dOuHl5UWzZs0YP348hw8fLnKc/fd1w4YNDBkyBF9fX9q0acPTTz+NzWYr97NXRGZmJtOmTSMqKgpPT09atmzJlClTSExMLHLczz//zDnnnEPjxo3x8fGhdevWXH755aSnpzuOmT9/Pj169MDf35+AgAA6derEww8/7JR5iohI9egeSPdAcHrdA8XExLBs2TIuuugi/u///g+bzVbq78pHH33EgAED8Pf3x9/fn549e/LOO+8UOWbZsmUMHz6coKAgfH196dy5M0899VSROZ9zzjnFxj71z8H+e/bss88ye/ZsoqKi8PLyYuXKlWRmZnL//ffTs2dPgoKCaNSoEQMGDODrr78uNq7NZuOVV16hZ8+e+Pj4EBwczFlnncU333wDmMHPRo0aFblXszv33HM544wzKvBTlNOVglIiNSg2Npbrr7+ea6+9lqVLlzJ58mQA9uzZw5gxY3jnnXdYtmwZU6dO5ZNPPuGiiy6q0Ljbtm3j/vvv59577+Xrr7+me/fuTJw4kV9//bXcc3Nycrj44osZPnw4X3/9NTfffDMvvPACzzzzjOOYtLQ0hg0bxsqVK3nmmWf45JNPCA0NZdy4cRWaX0JCAgAzZ87ku+++Y+HChbRp04ZzzjmnxP4Or732GitWrODFF1/kww8/JC0tjTFjxpCUlOQ4ZtGiRdx000107tyZzz//nOnTp/PEE08UKxcoiZubGxMmTGDz5s1s27atyHv2mzT7zfK///7LgAEDmD9/PsuXL+fRRx9l3bp1DB48mJycnAp9fjvDMLj00kt5//33uf/++/nyyy8566yzGD16dLFjY2JiaNy4MU8//TTLli3jtddew93dnf79+7Nr1y7ALEewz3f69OmsXbuWtWvXMmnSpFLncMcdd/Dggw9y3nnn8c033/DEE0+wbNkyBg4cWOwmMy4ujuuuu47rr7+eb775htGjRzNt2jQ++OCDSn3usn4Wzz33HDfccAPfffcd9913H++++y7nnnuu4x8EBw4c4IILLsDT05MFCxawbNkynn76afz8/MjOzgbMUoPJkyczdOhQvvzyS7766ivuvffeYv+gERER19E9kO6BTqd7oEWLFpGXl8fNN9/MiBEjiIiIYMGCBRiGUeS4Rx99lOuuu44WLVqwaNEivvzyS2688UYOHjzoOOadd95hzJgx2Gw2Xn/9db799lvuvvvuYsG0ynj55Zf5+eefee655/j+++/p1KkTWVlZJCQk8MADD/DVV1/x8ccfM3jwYMaOHVss6DlhwgTuuece+vXrx5IlS1i8eDEXX3yxo6/YPffcw8mTJ/noo4+KnLdjxw5WrlzJlClTqjx3OQ0YIlJtN954o+Hn51dk39ChQw3A+Omnn8o812azGTk5OcYvv/xiAMa2bdsc782cOdM49T/TiIgIw9vb2zh48KBjX0ZGhtGoUSPjtttuc+xbuXKlARgrV64sMk/A+OSTT4qMOWbMGKNjx46O71977TUDML7//vsix912220GYCxcuLDMz3Sq3NxcIycnxxg+fLhx2WWXOfbv37/fAIxu3boZubm5jv3r1683AOPjjz82DMMw8vLyjBYtWhi9e/c2bDab47gDBw4YHh4eRkRERLlz2Ldvn2GxWIy7777bsS8nJ8do3ry5MWjQoBLPsf/ZHDx40ACMr7/+2vHewoULDcDYv3+/Y9+NN95YZC7ff/+9ARgvvfRSkXGffPJJAzBmzpxZ6nxzc3ON7Oxso3379sa9997r2L9hw4ZS/wxO/X3ZuXOnARiTJ08ucty6desMwHj44Ycd++y/r+vWrStybJcuXYxRo0aVOk+7iIgI44ILLij1/WXLlhmA8eyzzxbZv2TJEgMw3nzzTcMwDOOzzz4zAGPr1q2ljnXnnXcawcHB5c5JRERqnu6ByqZ7oIZ/D2Sz2Yx27doZLVu2dPxZ2udT+L+Bffv2GVar1bjuuutKHSslJcUIDAw0Bg8eXOTP+1RDhw41hg4dWmz/qX8O9t+ztm3bGtnZ2WV+Dvvv6sSJE41evXo59v/6668GYDzyyCNlnj906FCjZ8+eRfbdcccdRmBgoJGSklLmuXJ6U6aUSA0KCQnh3HPPLbZ/3759XHvttTRv3hyr1YqHhwdDhw4FzFTq8vTs2ZPWrVs7vvf29qZDhw5FnrKUxmKxFHsa2b179yLn/vLLLwQEBBRrGHnNNdeUO77d66+/Tu/evfH29sbd3R0PDw9++umnEj/fBRdcgNVqLTIfwDGnXbt2ERMTw7XXXlskNTsiIoKBAwdWaD5RUVEMGzaMDz/80JFx8/333xMXF+d4Qghw7Ngxbr/9dsLDwx3zjoiIACr2Z1PYypUrAbjuuuuK7L/22muLHZubm8ucOXPo0qULnp6euLu74+npyZ49eyp93VOvP2HChCL7zzzzTDp37sxPP/1UZH/z5s0588wzi+w79XejquxPc0+dy5VXXomfn59jLj179sTT05Nbb72Vd999l3379hUb68wzzyQxMZFrrrmGr7/+ukJlBSIiUrt0D6R7IDg97oF++eUX9u7dy4033uj4s7SXGBYuLV2xYgV5eXllZg2tWbOG5ORkJk+e7NTVBC+++GI8PDyK7f/0008ZNGgQ/v7+jj/zd955p8jP/fvvvwcoN9vpnnvuYevWrfz++++AWb75/vvvc+ONN+Lv7++0zyINj4JSIjUoLCys2L7U1FSGDBnCunXrmD17NqtWrWLDhg188cUXAGRkZJQ7buPGjYvt8/LyqtC5vr6+eHt7Fzs3MzPT8f2JEycIDQ0tdm5J+0ry/PPPc8cdd9C/f38+//xz/vjjDzZs2MD5559f4hxP/Tz2xov2Y0+cOAGYNwynKmlfaSZOnMiJEycc9e8LFy7E39+fq666CjDr5UeOHMkXX3zBf/7zH3766SfWr1/v6O1QkZ9vYSdOnMDd3b3Y5ytpzvfddx8zZszg0ksv5dtvv2XdunVs2LCBHj16VPq6ha8PJf8etmjRwvG+XXV+ryoyF3d3d5o2bVpkv8VioXnz5o65tG3blh9//JFmzZoxZcoU2rZtS9u2bXnppZcc59xwww0sWLCAgwcPcvnll9OsWTP69+/PihUrqj1PERFxDt0D6R7odLkHsveDuuyyy0hMTCQxMZGgoCAGDx7M559/7uidefz4cYAym59X5JiqKOnn8MUXX3DVVVfRsmVLPvjgA9auXcuGDRu4+eabi/w3cfz4caxWa7m/b5dccgmRkZG89tprgFnSmJaWptI9KZdW3xOpQSU94fj555+JiYlh1apVjieDQLFmz67UuHFj1q9fX2x/XFxchc7/4IMPOOecc5g/f36R/SkpKVWeT2nXr+icAMaOHUtISAgLFixg6NCh/O9//2P8+PGOpzd//fUX27ZtY9GiRdx4442O8/bu3Vvleefm5nLixIkiNzslzfmDDz5g/PjxzJkzp8j++Ph4goODq3x9MPt6nHpzExMTQ5MmTao0blXnkpuby/Hjx4sEpgzDIC4uztG8FGDIkCEMGTKEvLw8Nm7cyCuvvMLUqVMJDQ3l6quvBswnkDfddBNpaWn8+uuvzJw5kwsvvJDdu3c7nuqKiIjr6B5I90Cnwz1QUlISn3/+OUCRe5nCPvroIyZPnuy4/zl8+DDh4eElHlv4mLJ4e3sX6TtmV1r2eEn/PX7wwQdERUWxZMmSIu+f2vi/adOm5OXlERcXV2Jwy87NzY0pU6bw8MMPM3fuXObNm8fw4cPp2LFjmZ9FRJlSIrXM/j/9U5dhfeONN1wxnRINHTqUlJQUR7qu3eLFiyt0vsViKfb5tm/fztq1a6s0n44dOxIWFsbHH39cpGHkwYMHWbNmTYXH8fb25tprr2X58uU888wz5OTkFElbd/afzbBhwwD48MMPi+w/tQmk/dqnXve7777jyJEjRfad+gS1LPayiVObdG7YsIGdO3cyfPjwcsdwFvu1Tp3L559/TlpaWolzsVqt9O/f3/HEbfPmzcWO8fPzY/To0TzyyCNkZ2fz999/18DsRUTEGXQPVHm6BypQF++BPvroIzIyMnjiiSdYuXJlsa8mTZo4SvhGjhyJ1WotFrAsbODAgQQFBfH6668Xa5JeWGRkJLt37y4SQDpx4kSlficsFguenp5FAlJxcXHFVt+zN6cva952kyZNwtPTk+uuu45du3Zx5513Vng+cvpSppRILRs4cCAhISHcfvvtzJw5Ew8PDz788MNiK6K40o033sgLL7zA9ddfz+zZs2nXrh3ff/89P/zwA2A+CSnLhRdeyBNPPMHMmTMZOnQou3bt4vHHHycqKorc3NxKz8fNzY0nnniCSZMmcdlll3HLLbeQmJjIY489VqnUdTDT11977TWef/55OnXqVKQfQ6dOnWjbti0PPfQQhmHQqFEjvv322yqXhY0cOZKzzz6b//znP6SlpdG3b19+//133n///WLHXnjhhSxatIhOnTrRvXt3Nm3axH//+99iT/fatm2Lj48PH374IZ07d8bf358WLVrQokWLYmN27NiRW2+9lVdeeQU3NzdGjx7NgQMHmDFjBuHh4dx7771V+lyliYuL47PPPiu2PzIykvPOO49Ro0bx4IMPkpyczKBBg9i+fTszZ86kV69e3HDDDYDZh+Pnn3/mggsuoHXr1mRmZjpu5kaMGAHALbfcgo+PD4MGDSIsLIy4uDieeuopgoKCSn1KKSIirqd7IN0DNbR7oHfeeYeQkBAeeOCBYqWhAOPHj+f5559n27Zt9OjRg4cffpgnnniCjIwMrrnmGoKCgtixYwfx8fHMmjULf39/5s6dy6RJkxgxYgS33HILoaGh7N27l23btvHqq68CZiuDN954g+uvv55bbrmFEydO8OyzzxIYGFjhuV944YV88cUXTJ48mSuuuIJDhw7xxBNPEBYWxp49exzHDRkyhBtuuIHZs2dz9OhRLrzwQry8vNiyZQu+vr7cddddjmODg4MZP3488+fPJyIiosKrasppzpVd1kUaitJWnjnjjDNKPH7NmjXGgAEDDF9fX6Np06bGpEmTjM2bNxdbUaS0lWdKWuXs1FU4Slt55tR5lnad6OhoY+zYsYa/v78REBBgXH755cbSpUuLrcBSkqysLOOBBx4wWrZsaXh7exu9e/c2vvrqq1JXBPnvf/9bbAxKWJnl7bffNtq3b294enoaHTp0MBYsWFBszIro1atXiSvBGYZh7NixwzjvvPOMgIAAIyQkxLjyyiuN6OjoYvOpyMozhmEYiYmJxs0332wEBwcbvr6+xnnnnWf8888/xcY7efKkMXHiRKNZs2aGr6+vMXjwYGP16tUlrq7y8ccfG506dTI8PDyKjFPSn2NeXp7xzDPPGB06dDA8PDyMJk2aGNdff71x6NChIseV9vta0Z9vRESEAZT4deONNxqGYa6Q9OCDDxoRERGGh4eHERYWZtxxxx3GyZMnHeOsXbvWuOyyy4yIiAjDy8vLaNy4sTF06FDjm2++cRzz7rvvGsOGDTNCQ0MNT09Po0WLFsZVV11lbN++vdx5ioiIc+keqCjdAxVo6PdA27ZtMwBj6tSppR5j/7x33XWXY997771n9OvXz/D29jb8/f2NXr16FVtRcOnSpcbQoUMNPz8/w9fX1+jSpYvxzDPPFDnm3XffNTp37mx4e3sbXbp0MZYsWVKp3zPDMIynn37aiIyMNLy8vIzOnTsbb731Vqk/yxdeeMHo2rWr4enpaQQFBRkDBgwwvv3222Jjrlq1ygCMp59+utSfi0hhFsMoIy9QRKSQOXPmMH36dKKjo53egFFERESkrtI9kEjF3H///cyfP59Dhw6V2EBe5FQq3xOREtnTgzt16kROTg4///wzL7/8Mtdff71uxkRERKTB0j2QSOX98ccf7N69m3nz5nHbbbcpICUVpqCUiJTI19eXF154gQMHDpCVlUXr1q158MEHmT59uqunJiIiIlJjdA8kUnkDBgzA19eXCy+8kNmzZ7t6OlKPqHxPRERERERERERqXdnLR4iIiIiIiIiIiNQABaVERERERERERKTWKSglIiIiIiIiIiK17rRrdG6z2YiJiSEgIACLxeLq6YiIiEgdYhgGKSkptGjRAjc3Pbsri+6pREREpDQVvac67YJSMTExhIeHu3oaIiIiUocdOnRIS7+XQ/dUIiIiUp7y7qlOu6BUQEAAYP5gAgMDXTwbERERqUuSk5MJDw933C9I6XRPJSIiIqWp6D3VaReUsqeXBwYG6gZKRERESqRytPLpnkpERETKU949lZoliIiIiIiIiIhIrVNQSkREREREREREap2CUiIiIiIiIiIiUutOu55SIiJSP9hsNrKzs109DWlgPDw8sFqtrp6GiIiIiKCglIiI1EHZ2dns378fm83m6qlIAxQcHEzz5s3VzFxERETExRSUEhGROsUwDGJjY7FarYSHh+PmpkpzcQ7DMEhPT+fYsWMAhIWFuXhGIiIiIqc3BaVERKROyc3NJT09nRYtWuDr6+vq6UgD4+PjA8CxY8do1qyZSvlEREREXEiPn0VEpE7Jy8sDwNPT08UzkYbKHuzMyclx8Uwq5tdff+Wiiy6iRYsWWCwWvvrqq3LP+eWXX+jTpw/e3t60adOG119/vdgxn3/+OV26dMHLy4suXbrw5Zdf1sDsRUREREqnoJSIiNRJ6vcjNaW+/W6lpaXRo0cPXn311Qodv3//fsaMGcOQIUPYsmULDz/8MHfffTeff/6545i1a9cybtw4brjhBrZt28YNN9zAVVddxbp162rqY4iIiIgUYzEMw3D1JGpTcnIyQUFBJCUlERgY6OrpiIjIKTIzM9m/fz9RUVF4e3u7ejrS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+fHLL7+Qm5vL5MmTGTduHKtWrQLguuuuo1evXsyfPx+r1crWrVvx8PAAYMqUKWRnZ/Prr7/i5+fHjh078Pf3r/Q8ROT0Yl95r0OoP25u5f//XkREnEtBKZHqsgelokoo3QMFpUSqKycd5rRwzbUfjgFPvwodevPNN/Pf//6XVatWMWzYMMAs3Rs7diwhISGEhITwwAMPOI6/6667WLZsGZ9++mmFglI//vgjO3fu5MCBA7Rq1QqAOXPmFOsDNX36dMfryMhI7r//fpYsWcJ//vMffHx88Pf3x93dnebNm5d6rQ8//JCMjAzee+89/PzMz//qq69y0UUX8cwzzxAaGgpASEgIr776KlarlU6dOnHBBRfw008/VSko9eOPP7J9+3b2799PeHg4AO+//z5nnHEGGzZsoF+/fkRHR/N///d/dOrUCYD27ds7zo+Ojubyyy+nW7duALRp06bScxCR088/sWY/KTU5FxFxDZeX782bN4+oqCi8vb3p06cPq1evrtB5v//+O+7u7iU2axWpVfvzf2dL6icF4BNsbhWUEmnQOnXqxMCBA1mwYAEA//77L6tXr+bmm28GIC8vjyeffJLu3bvTuHFj/P39Wb58OdHR0RUaf+fOnbRu3doRkAIYMKB4yfBnn33G4MGDad68Of7+/syYMaPC1yh8rR49ejgCUgCDBg3CZrOxa9cux74zzjgDq9Xq+D4sLIxjx45V6lqFrxkeHu4ISAF06dKF4OBgdu7cCcB9993HpEmTGDFiBE8//TT//vuv49i7776b2bNnM2jQIGbOnMn27durNA8ROb0UrLynflIiIq7g0kypJUuWMHXqVObNm8egQYN44403GD16NDt27KB169alnpeUlMT48eMZPnx4kV4TIrUuMRoSD4LFCq3PKvkYR6ZUYq1NS6RB8fA1M5Zcde1KmDhxInfeeSevvfYaCxcuJCIiguHDhwMwd+5cXnjhBV588UW6deuGn58fU6dOJTs7u0JjG4ZRbJ/llNLCP/74g6uvvppZs2YxatQogoKCWLx4MXPnzq3U5zAMo9jYJV3TXjpX+D2bzVapa5V3zcL7H3vsMa699lq+++47vv/+e2bOnMnixYu57LLLmDRpEqNGjeK7775j+fLlPPXUU8ydO5e77rqrSvMRkdPDrqNmUEor74mIuIZLM6Wef/55Jk6cyKRJk+jcuTMvvvgi4eHhzJ8/v8zzbrvtNq699toSnxCL1Cp7llTL3uBVys2MyvdEqsdiMUvoXPFVgX5ShV111VVYrVY++ugj3n33XW666SZHQGX16tVccsklXH/99fTo0YM2bdqwZ8+eCo/dpUsXoqOjiYkpCNCtXbu2yDG///47ERERPPLII/Tt25f27dsXWxHQ09OTvLy8cq+1detW0tLSiozt5uZGhw4dKjznyrB/vkOHDjn27dixg6SkJDp37uzY16FDB+69916WL1/O2LFjWbhwoeO98PBwbr/9dr744gvuv/9+3nrrrRqZq4g0DOnZuUQnmD0LFZQSEXENlwWlsrOz2bRpEyNHjiyyf+TIkaxZs6bU8xYuXMi///7LzJkza3qKIuU78Ju5La10DxSUEjmN+Pv7M27cOB5++GFiYmKYMGGC47127dqxYsUK1qxZw86dO7ntttuIi4ur8NgjRoygY8eOjB8/nm3btrF69WoeeeSRIse0a9eO6OhoFi9ezL///svLL7/Ml19+WeSYyMhI9u/fz9atW4mPjycrK6vYta677jq8vb258cYb+euvv1i5ciV33XUXN9xwg6OfVFXl5eWxdevWIl87duxgxIgRdO/eneuuu47Nmzezfv16xo8fz9ChQ+nbty8ZGRnceeedrFq1ioMHD/L777+zYcMGR8Bq6tSp/PDDD+zfv5/Nmzfz888/FwlmiYicavfRVAwDmvh70djfy9XTERE5LbksKBUfH09eXl6xm9vQ0NBSb9L37NnDQw89xIcffoi7e8UqD7OyskhOTi7yJeIUhlHQ5DxycOnHeQeb28xEqGJZi4jUHxMnTuTkyZOMGDGiSCn6jBkz6N27N6NGjeKcc86hefPmXHrppRUe183NjS+//JKsrCzOPPNMJk2axJNPPlnkmEsuuYR7772XO++8k549e7JmzRpmzJhR5JjLL7+c888/n2HDhtG0aVM+/vjjYtfy9fXlhx9+ICEhgX79+nHFFVcwfPhwXn311cr9MEqQmppKr169inyNGTMGi8XCV199RUhICGeffTYjRoygTZs2LFmyBACr1cqJEycYP348HTp04KqrrmL06NHMmjULMINdU6ZMoXPnzpx//vl07NiRefPmVXu+ItJw2ZucK0tKRMR1LEZJTSpqQUxMDC1btmTNmjVFyvCefPJJ3n//ff75558ix+fl5XHWWWcxceJEbr/9dsDsLfHVV1+xdevWUq/z2GOPOW5YC0tKSiIwUA0NpRoS9sPLPcHNAx46WPoKXTkZ8GT+KlcPHixofC4iJcrMzGT//v2ORTBEnK2s37Hk5GSCgoJ0n1AB+llJfffYN3+zaM0BJg6OYsaFXVw9HRGRBqWi9wkuy5Rq0qQJVqu1WFbUsWPHSiwNSElJYePGjdx55524u7vj7u7O448/zrZt23B3d+fnn38u8TrTpk0jKSnJ8VW4V4VItdizpFr2KXvJeA8fcPcxX2cm1vi0RERERKR8uxwr7ylTSkTEVVy2+p6npyd9+vRhxYoVXHbZZY79K1as4JJLLil2fGBgIH/++WeRffPmzePnn3/ms88+IyoqqsTreHl54eWlGnGpAfZ+UlFl9JOy8wmBlAyzr1RIZI1OS0RERETKZhiGY+W9zs2V6Sci4iouC0oB3Hfffdxwww307duXAQMG8OabbxIdHe0oz5s2bRpHjhzhvffew83Nja5duxY5v1mzZnh7exfbL1LjDKNg5b2y+knZ+YRASoyanYuIiIjUAcdTs0hIy8bNAu1D/V09HRGR05ZLg1Ljxo3jxIkTPP7448TGxtK1a1eWLl1KREQEALGxsURHR7tyiiIlS9hnBpmsnhDev/zj7X2kFJQSERERcTl76V5kYz+8Pawuno2IyOnLpUEpgMmTJzN58uQS31u0aFGZ5z722GM89thjzp+USHn2/2puW/Uze0aVxyfE3GYk1tiURERERKRi/olVPykRkbrAZY3OReo1ez+pyAr0kwJlSolUgYsWh5XTgM1mc/UURMTF/lGTcxGROsHlmVIi9Y5hFKy8V5F+UlAoU0pBKZHyeHh4YLFYOH78OE2bNsVisbh6StJAGIZBdnY2x48fx83NDU9PT1dPSURcZNfRZAA6KSglIuJSCkqJVFb8Hkg9ClYvs3yvIlS+J1JhVquVVq1acfjwYQ4cOODq6UgD5OvrS+vWrXFzU8K4yOkoz2aw52gqAJ208p6IiEspKCVSWQfy+0mFnwke3hU7xzvY3CpTSqRC/P39ad++PTk5Oa6eijQwVqsVd3d3ZeCJnMYOnEgjK9eGj4eV1o18XT0dEZHTmoJSIpVV2X5SUJAplZno9OmINFRWqxWrVSsiiYiIc9mbnHcI9cfNTQFqERFXUt66SGUYRkFQKqoKQSllSomIiIi41K44s5+UmpyLiLieglIilXH8H0g7Du4+0LJPxc9TUEpERESkTihYeU/9pEREXE1BKZHK2J+/6l7r/uDuVfHzFJQSERERqRN2HTWDUp2VKSUi4nIKSolUxoH8oFTk4Mqd5xNsbnMzISfDqVMSERERkYpJz84lOiEdUPmeiEhdoKCUSEXZbIWanJ9duXO9AsGS37A5I9Gp0xIRERGRitl9NBXDgCb+XjT2r0TWu4iI1AgFpUQq6tgOyEgADz9o2bty51osBdlSKuETERERcYl/Ys0m552UJSUiUicoKCVSUfYsqdZngdWj8uerr5SIiIiISxU0OVdQSkSkLlBQSqSiqtpPys472NwqKCUiIiLiErsUlBIRqVMUlBKpiML9pKIq2U/Kzp4plZnolCmJiIiISMUZhlFo5b1AF89GRERAQSmRijn6pxlM8gyAsJ5VG0PleyIiIiIuczw1i4S0bNws0D7U39XTERERFJQSqZjYbea2VV+wuldtDAWlRERERFzmn1gzSyqysR/eHlYXz0ZEREBBKZGKST1qboNaVX0MBaVEREREXEb9pERE6h4FpUQqIvWYufUPrfoYPsHmVkEpERERkVqnlfdEROoeBaVEKsKeKeXfrOpjODKlEqs9HRERERGpnF1HkwHopCbnIiJ1hoJSIhXhyJRyRlBKmVIiIiIitSnPZrDnaCoAnZQpJSJSZygoJVIRjkyp6pTvKSglIiIi4goHTqSRlWvDx8NK60a+rp6OiIjkU1BKpCKc0lNK5XsiIiIirmBfea9DqD9ubhYXz0ZEROwUlBIpT3YaZJvp3tUq3/MONrdZSWDLq/a0RERERKRidsWZ/aTU5FxEpG5RUEqkPPYsKQ9f8PSv+jj21fcAMpOqNSURERERqbiClffU5FxEpC5RUEqkPPaglF9TsFQj3dvqAZ75T+fUV0pERCph3rx5REVF4e3tTZ8+fVi9enWZx7/22mt07twZHx8fOnbsyHvvvVfsmBdffJGOHTvi4+NDeHg49957L5mZmTX1EURcatdRMyjVWZlSIiJ1irurJyBS5zmjybmdTwhkpygoJSIiFbZkyRKmTp3KvHnzGDRoEG+88QajR49mx44dtG7dutjx8+fPZ9q0abz11lv069eP9evXc8sttxASEsJFF10EwIcffshDDz3EggULGDhwILt372bChAkA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yRSUkkpjs1oY39esLfX+hkMkpmZyf34dqXG9mzO6hzoOFeEYwvfj74mcych2c2tEREREKsiZKZUIeRdQlkA1pUSqRHh4uHMKDg7GYrE432dmZtKgQQM+/fRTBg4ciI+PDx9++CEnT57klltuoVmzZvj5+dGlSxc++eQTl+OeP3wvKiqKZ555hkmTJhEYGEiLFi14++23S21feno6n376Kffccw/XXXcdCxcuLLTNsmXL6NWrFz4+PoSGhnLDDTc412VlZfHwww/TvHlzvL29ufjii5k/fz4ACxcupEGDBi7H+uKLL1xqJs2ePZvu3bsTHR1N69at8fb2xjAMvvvuO/r370+DBg1o1KgR1113HQcOHHA51tGjRxk3bhwNGzbE39+fXr168csvv3Do0CGsVitbtmxx2f61116jZcuWGIZR6nWp7RSUkko1tldzvD2s7DqWwq3v/EJSWhbtwgJ5cmQndzet1mofHkTHiCBy7AZf7oh3d3NEREREKsaRKWXY4eypih/HMXwvWMP3pPYwDIOM7Fy3TJUZ2HjkkUe47777iI2NZejQoWRmZtKzZ0+++uordu3axd1338348eP55ZdfSjzOSy+9RK9evdi+fTtTp07lnnvu4ffffy9xn8WLF9OuXTvatWvH7bffzoIFC1w+29dff80NN9zAtddey/bt2/nhhx/o1auXc/0dd9zBokWLePXVV4mNjeWtt94iIKB8I3n279/Pp59+yueff05MTAxgBstmzpzJ5s2b+eGHH7BarVx//fXk5Qff09LSuPLKKzl+/DjLli3j119/5eGHHyYvL4+oqCgGDx7MggULXM6zYMECJk6cWC+K5Xu4uwFSt4T4ezGyWyT/b+tR9iem4etp443betSp4uPucMMlTfnt6xSWbjvqfNKhiIiISK1i8wS/RpBx0hzC5x9a/mNkJkN2qjmvTCmpRc7m2On4z+/dcu7fnh6Kn1fl/Ok/Y8YMl+wjgIceesg5P336dL777js+++wzLr300mKPM2LECKZOnQqYga6XX36Z1atX0759+2L3mT9/PrfffjsAw4YNIy0tjR9++IHBgwcD8J///Idx48bx1FNPOffp1q0bAHv37uXTTz9lxYoVzu1bt25dno8OQHZ2Nh988AGNGzd2LhszZkyhdjZp0oTffvuNzp078/HHH3PixAk2b95Mw4YNAWjT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GsS8efNcljVs2NA537dvX5d1ffv2JSYmBoDY2Fi6deuGv7+/c/3ll19OXl4ee/bswWKxcPz4ca6++uoS29C1a1fnvL+/P4GBgSQmJgJwzz33MGbMGLZt28aQIUMYPXo0/fr1q9BnFREREakq6lOJSE2hoJSI1Br+/v6FUr9LY7FYADAMwzlf1Da+vr5lOp6np2ehffPy8gAYPnw4hw8f5uuvv2blypVcffXV3Hvvvbz44ovlarOIiIhIVVKfSkRqCtWUEpE6Y+PGjYXet2/fHoCOHTsSExNDenq6c/26deuwWq20bduWwMBAoqKi+OGHHy6oDY0bN2bixIl8+OGHzJ07l7fffvuCjiciIiJS3dSnEpHqokwpEak1srKySEhIcFnm4eHhLHz52Wef0atXL/r3789HH33Epk2bmD9/PgC33XYbTz75JBMmTGD27NmcOHGC6dOnM378eMLCwgCYPXs2U6ZMoUmTJgwfPpzU1FTWrVvH9OnTy9S+f/7zn/Ts2ZNOnTqRlZXFV199RYcOHSrxCoiIiIhcOPWpRKSmUFBKRGqN7777joiICJdl7dq14/fffwfMp7gsWrSIqVOnEh4ezkcffUTHjh0B8PPz4/vvv+f++++nd+/e+Pn5MWbMGObMmeM81oQJE8jMzOTll1/moYceIjQ0lBtvvLHM7fPy8mLWrFkcOnQIX19fBgwYwKJFiyrhk4uIiIhUHvWpRKSmsBiGYbi7ESIiF8pisbB06VJGjx7t7qaIiIiI1FrqU4lIdVJNKRERERERERERqXYKSomIiIiIiIiISLXT8D0REREREREREal2ypQSEREREREREZFqp6CUiIiIiIiIiIhUOwWlRERERERERESk2ikoJSIiIiIiIiIi1U5BKRERERERERERqXYKSomIiIiIiIiISLVTUEpERERERERERKqdglIiIiIiIiIiIlLtFJQSEREREREREZFq9/8Byt5gzJsgRG8AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1200x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "# Plotting the training and validation history\n",
    "plt.figure(figsize=(12, 4))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(train_loss_history, label='Train Loss')\n",
    "plt.plot(val_loss_history, label='Validation Loss')\n",
    "plt.title('Training and Validation Loss')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.plot(train_acc_history, label='Train Accuracy')\n",
    "plt.plot(val_acc_history, label='Validation Accuracy')\n",
    "plt.title('Training and Validation Accuracy')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "aafe74d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Final Testing Loss: 0.0492, Testing Accuracy: 99.29%\n",
      "5/5 [==============================] - 5s 658ms/step\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "         0.0       0.99      1.00      0.99        97\n",
      "         1.0       1.00      0.95      0.97        20\n",
      "         2.0       1.00      1.00      1.00        23\n",
      "\n",
      "    accuracy                           0.99       140\n",
      "   macro avg       1.00      0.98      0.99       140\n",
      "weighted avg       0.99      0.99      0.99       140\n",
      "\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import classification_report\n",
    "\n",
    "# After training, you can use the test set for the final evaluation\n",
    "test_loss, test_acc = maml_model.evaluate(test_images, test_labels, verbose=0)\n",
    "print(f'Final Testing Loss: {test_loss:.4f}, Testing Accuracy: {test_acc * 100:.2f}%')\n",
    "\n",
    "# Predict probabilities for test images\n",
    "y_pred_prob = maml_model.predict(test_images)\n",
    "\n",
    "# Convert probabilities to class labels\n",
    "y_pred = np.argmax(y_pred_prob, axis=1)\n",
    "\n",
    "# Generate classification report\n",
    "print(classification_report(test_labels, y_pred))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2033b374",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "632296ad-3d20-4c14-8bfc-746a10ca5fa1",
   "metadata": {},
   "outputs": [],
   "source": [
    "#STAGE 5: MAML"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b8abf3b-e9df-48b2-9d66-77be7fb86a2c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "import numpy as np\n",
    "import random\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras import layers, models, optimizers\n",
    "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# Set random seeds for reproducibility\n",
    "tf.random.set_seed(42)\n",
    "np.random.seed(42)\n",
    "random.seed(42)\n",
    "\n",
    "# Define base model using ResNet50\n",
    "base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_shape=(250, 200, 3))\n",
    "for layer in base_model.layers:\n",
    "    layer.trainable = False\n",
    "\n",
    "# Unfreeze last few ResNet50 layers for better adaptation\n",
    "for layer in base_model.layers[-10:]:\n",
    "    layer.trainable = True\n",
    "\n",
    "def create_maml_model(base_model, num_classes):\n",
    "    maml_model = models.Sequential([\n",
    "        base_model,\n",
    "        layers.Conv2D(512, (3, 3), activation='relu', padding='same'),\n",
    "        layers.GlobalAveragePooling2D(),\n",
    "        layers.Dense(512, activation='relu'),\n",
    "        layers.Dropout(0.5),\n",
    "        layers.BatchNormalization(),\n",
    "        layers.Dense(num_classes, activation='softmax')\n",
    "    ])\n",
    "    return maml_model\n",
    "\n",
    "# MAML hyperparameters\n",
    "num_classes = 3\n",
    "n_way = num_classes\n",
    "k_shot = 5\n",
    "q_query = 5\n",
    "num_tasks = 25\n",
    "num_epochs = 100\n",
    "alpha = 0.01\n",
    "beta = 0.001\n",
    "inner_steps = 5\n",
    "\n",
    "# Instantiate model and optimizer\n",
    "maml_model = create_maml_model(base_model, num_classes)\n",
    "meta_optimizer = tf.keras.optimizers.Adam(learning_rate=beta)\n",
    "\n",
    "# Paths for saving\n",
    "save_dir = 'C:\\\\Users\\\\oscar\\\\Documents\\\\experimentos\\\\Dataset2\\\\kfold'\n",
    "os.makedirs(save_dir, exist_ok=True)\n",
    "\n",
    "# Data augmentation\n",
    "datagen = ImageDataGenerator(\n",
    "    rotation_range=20,\n",
    "    width_shift_range=0.2,\n",
    "    height_shift_range=0.2,\n",
    "    horizontal_flip=True\n",
    ")\n",
    "\n",
    "def maml_task_step(model, support_images, support_labels, query_images, query_labels):\n",
    "    with tf.GradientTape() as meta_tape:\n",
    "        # Clone the weights from the model for inner loop\n",
    "        fast_weights = model.trainable_variables\n",
    "\n",
    "        # Inner loop adaptation\n",
    "        for _ in range(inner_steps):\n",
    "            with tf.GradientTape() as tape:\n",
    "                support_preds = model(support_images, training=True)\n",
    "                support_loss = tf.keras.losses.sparse_categorical_crossentropy(support_labels, support_preds)\n",
    "                support_loss = tf.reduce_mean(support_loss)\n",
    "            grads = tape.gradient(support_loss, fast_weights)\n",
    "            fast_weights = [w - alpha * g if g is not None else w for w, g in zip(fast_weights, grads)]\n",
    "\n",
    "        # Compute query predictions using the adapted weights\n",
    "        def forward_with_weights(x, weights):\n",
    "            idx = 0\n",
    "            for layer in model.layers:\n",
    "                if hasattr(layer, 'trainable_variables') and layer.trainable_variables:\n",
    "                    n_vars = len(layer.trainable_variables)\n",
    "                    for i in range(n_vars):\n",
    "                        layer.trainable_variables[i].assign(weights[idx])\n",
    "                        idx += 1\n",
    "            return model(x, training=True)\n",
    "\n",
    "        query_preds = forward_with_weights(query_images, fast_weights)\n",
    "        query_loss = tf.keras.losses.sparse_categorical_crossentropy(query_labels, query_preds)\n",
    "        query_loss = tf.reduce_mean(query_loss)\n",
    "\n",
    "    meta_grads = meta_tape.gradient(query_loss, model.trainable_variables)\n",
    "    return meta_grads, query_loss\n",
    "\n",
    "# Track loss and accuracy for plotting\n",
    "train_loss_history = []\n",
    "val_loss_history = []\n",
    "train_acc_history = []\n",
    "val_acc_history = []\n",
    "\n",
    "# MAML training loop\n",
    "best_val_loss = float('inf')\n",
    "patience = 15\n",
    "wait = 0\n",
    "\n",
    "for epoch in range(num_epochs):\n",
    "    print(f\"\\nEpoch {epoch + 1}/{num_epochs}\")\n",
    "    meta_grads_accum = [tf.zeros_like(var) for var in maml_model.trainable_variables]\n",
    "    epoch_loss = []\n",
    "\n",
    "    for task in range(num_tasks):\n",
    "        support_images, support_labels, query_images, query_labels = [], [], [], []\n",
    "\n",
    "        for class_idx in range(n_way):\n",
    "            class_indices = np.where(train_labels == class_idx)[0]\n",
    "            selected_indices = np.random.choice(class_indices, k_shot + q_query, replace=False)\n",
    "            support_idx = selected_indices[:k_shot]\n",
    "            query_idx = selected_indices[k_shot:]\n",
    "\n",
    "            support_images.extend(train_images[support_idx])\n",
    "            support_labels.extend([class_idx] * k_shot)\n",
    "            query_images.extend(train_images[query_idx])\n",
    "            query_labels.extend([class_idx] * q_query)\n",
    "\n",
    "        support_images = tf.convert_to_tensor(np.array(support_images), dtype=tf.float32)\n",
    "        support_labels = tf.convert_to_tensor(np.array(support_labels), dtype=tf.int32)\n",
    "        query_images = tf.convert_to_tensor(np.array(query_images), dtype=tf.float32)\n",
    "        query_labels = tf.convert_to_tensor(np.array(query_labels), dtype=tf.int32)\n",
    "\n",
    "        meta_grads, loss = maml_task_step(\n",
    "            maml_model, support_images, support_labels, query_images, query_labels\n",
    "        )\n",
    "\n",
    "        meta_grads_accum = [\n",
    "            acc + (g if g is not None else tf.zeros_like(acc))\n",
    "            for acc, g in zip(meta_grads_accum, meta_grads)\n",
    "        ]\n",
    "        epoch_loss.append(loss.numpy())\n",
    "\n",
    "    mean_grads = [g / num_tasks for g in meta_grads_accum]\n",
    "    meta_optimizer.apply_gradients(zip(mean_grads, maml_model.trainable_variables))\n",
    "\n",
    "    mean_query_loss = np.mean(epoch_loss)\n",
    "    train_loss_history.append(mean_query_loss)\n",
    "\n",
    "    train_preds = maml_model.predict(train_images)\n",
    "    train_acc = np.mean(np.argmax(train_preds, axis=1) == train_labels)\n",
    "    train_acc_history.append(train_acc)\n",
    "\n",
    "    print(f\"Epoch {epoch + 1}: Mean Query Loss: {mean_query_loss:.4f}\")\n",
    "\n",
    "    val_preds = maml_model.predict(val_images)\n",
    "    val_loss = tf.reduce_mean(tf.keras.losses.sparse_categorical_crossentropy(val_labels, val_preds)).numpy()\n",
    "    val_acc = np.mean(np.argmax(val_preds, axis=1) == val_labels)\n",
    "\n",
    "    val_loss_history.append(val_loss)\n",
    "    val_acc_history.append(val_acc)\n",
    "\n",
    "    print(f\"Validation Loss: {val_loss:.4f}, Accuracy: {val_acc * 100:.2f}%\")\n",
    "\n",
    "    if val_loss < best_val_loss:\n",
    "        best_val_loss = val_loss\n",
    "        wait = 0\n",
    "        maml_model.save(os.path.join(save_dir, 'best_model.keras'))\n",
    "    else:\n",
    "        wait += 1\n",
    "        if wait >= patience:\n",
    "            print(f\"Early stopping at epoch {epoch + 1}\")\n",
    "            break\n",
    "\n",
    "# Final test\n",
    "test_preds = maml_model.predict(test_images)\n",
    "test_loss = tf.reduce_mean(tf.keras.losses.sparse_categorical_crossentropy(test_labels, test_preds)).numpy()\n",
    "test_acc = np.mean(np.argmax(test_preds, axis=1) == test_labels)\n",
    "print(f'Final Test Loss: {test_loss:.4f}, Accuracy: {test_acc * 100:.2f}%')\n",
    "\n",
    "# Plotting the training and validation history\n",
    "plt.figure(figsize=(12, 4))\n",
    "plt.subplot(1, 2, 1)\n",
    "plt.plot(train_loss_history, label='Train Loss', color='blue')\n",
    "plt.plot(val_loss_history, label='Validation Loss', color='orange')\n",
    "plt.title('Training and Validation Loss')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Loss')\n",
    "plt.legend()\n",
    "\n",
    "plt.subplot(1, 2, 2)\n",
    "plt.plot(train_acc_history, label='Train Accuracy', color='blue')\n",
    "plt.plot(val_acc_history, label='Validation Accuracy', color='orange')\n",
    "plt.title('Training and Validation Accuracy')\n",
    "plt.xlabel('Epochs')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.legend()\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9795a71e-0e2a-433b-bf49-c73c5f561557",
   "metadata": {},
   "outputs": [],
   "source": [
    "#confusion matrix\n",
    "from sklearn.metrics import classification_report, confusion_matrix, ConfusionMatrixDisplay\n",
    "\n",
    "test_preds = maml_model.predict(test_images)\n",
    "test_pred_labels = np.argmax(test_preds, axis=1)\n",
    "\n",
    "test_loss = tf.reduce_mean(tf.keras.losses.sparse_categorical_crossentropy(test_labels, test_preds)).numpy()\n",
    "test_acc = np.mean(test_pred_labels == test_labels)\n",
    "print(f'Final Test Loss: {test_loss:.4f}, Accuracy: {test_acc * 100:.2f}%')\n",
    "\n",
    "# Classification report\n",
    "from sklearn.metrics import classification_report\n",
    "print(\"\\nClassification Report:\")\n",
    "print(classification_report(test_labels, test_pred_labels, target_names=['cutmark', 'tm', 'trampling']))\n",
    "\n",
    "# Confusion matrix\n",
    "cm = confusion_matrix(test_labels, test_pred_labels)\n",
    "disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=['cutmark', 'tm', 'trampling'])\n",
    "disp.plot(cmap='Blues', values_format='d')\n",
    "plt.title(\"Confusion Matrix\")\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
